本文不涉及详细的代码审计,主要实现漏洞复现技术
第一步:上传
将安装包的. /upload目录中的全部文件和目录结构上传到服务器的网站根目录(注意是上传upload 目录中的文件和目录,而不是上传upload目录本身。
第二步:运行脚本
在浏览器中运行/e/install/index. php,即访问http:// 你的网址/e/ install/index. php
第三步:删除安装程序目录
安装成功后,请通过FTP删除安装程序目录(/e/install),以避免被再次安装。
第四步:初始化:
依次按下面顺序操作即可: | |
---|---|
后台 > 系统 > 数据更新 > 数据更新中心 > | 1、恢复栏目目录 |
** ** | 2、刷新所有信息栏目页 |
** ** | 3、刷新所有信息内容页面 |
(选择全部刷新,刷新后所有表均提示“* 生成完毕”即可)** | |
** ** | 4、刷新所有JS调用 |
第五步:进入搭建好的测试站点主页面,至此帝国CMS搭建完毕
http://192.168.200.14/EmpirECMS/upload/
首先,利用nmap工具端口扫描。使用的命令如下
nmap -T4 -A -v 192.168.200.16 #扫描速度为T4,强力扫描,并且扫扫描细节
通过站长之家,进行ip地址查询具体信息,可以看到这是私人的ip地址,并且是自己集成的靶场环境。
可以从各种途径上获取搭建网站所使用的脚本、类型、框架等信息,获取有关他们存在的漏洞信息
通过爆破网站目录可以看到一个非常有用的信息:EmpireCMS/robots.txt,这个文件是禁止爬虫的,这里面存放的全是网站的敏感信息,不妨试试
由此推进,访问/e/config这个目录,它一般是存放和配置文件有关的信息的,当我们尝试访问后可以发现,第一个是网站的主目录,第二个是网站的存储数据库等信息的文件
访问配置文件是空白,网站肯定是做了什么过滤,那么这里面的内容应该很重要
但是我们可以看到重要的信息,比如网站后台有关的admin目录都没有显示出来,从而推断EmpireCMS/e这个目录很敏感,就再次尝试对它目录扫描,然后几乎全部的敏感目录都爆出来了(状态码200的能够访问)
通过尝试,终于发现后台路径!(如果想知道更多目录内的信息还需要重复此类操作,不过在浪费这些时间之前,我们还是要一步步的来,拿到网站webshell为主)
后台界面
御剑爆破结果
随便输入的账户admin和密码123456,网页显示(没有注意后台错误5次限制登录,最主要的是有密保问题,如果设置了,还得另想办法。先按照正常的流程测试)
那么没办法,只能从两个payload选择集束炸弹模式
选择常用的字典进行爆破之后,从反馈的页面的发现,弱口令爆破是行不通的
解决方案:
①更改配置文件( /e/config/config.php)
loginnum :5,错误次数
logintime :60,锁定时间
②使用ip代理池(谨慎使用)
③社工手段
本题中选择更改配置文件绕过
则顺利爆破登录成功
成功登录网站后台!
点击网站的后台能够查到网站数据库信息
我们的一个目的已经达成
site 指定域名
**inurl url中存在关键字的网页 **
**filetype 指定文件类型 **
**info 查找指定站点的基本信息 **
网站底部有icp等内容,可以称为获取对方公司和法人的信息(手机号,微信号,邮箱等)
whatweb时kali当中的一款工具,可以更清楚的知道网站中可以为自己所用的信息
参数设置页面,限制了很多可以文件上传的后缀名,很多可以上传文件的位置都做了严格的过滤,倘若更改限制后缀名那么相信木马文件也可以轻松上传
通过以上的信息收集,可以获取到对方搭建网站的脚本信息并由此去互联网上寻找到开源的漏洞信息,对方使用的是何种服务器,根据ip所在地可以查询到对方住址等,最后黑进对方后台可以看到对方数据库的信息,想辙将其导出,便可以获取到本网站的用户的重要信息等。
设计工具:
端口扫描:nmap
敏感目录扫描:dirsearch,御剑
ip属地查询:站长之家,fofa等网页工具
网络抓包工具、弱口令爆破工具:Burpsuite
蚁剑:拿取网站webshell
火狐浏览器插件Wappalyzer:获取网站的数据库、框架、编程语言、操作系统等信息
SQLmap:对涉及含有sql注入的url进行扫描
**
本地准备一个1.php并改名为1.php.mod,用$进行转义,存放的数据表名需要填一个数据库内没有的表名(随便都行)
<?php file_put_contents("shell.php","");?>
#file_put_contents() 函数:创建并写入一个新文件
file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] )
参数 描述
filename 必需。规定要写入数据的文件。如果文件不存在,则创建一个新文件。
data 必需。规定要写入文件的数据。可以是字符串、数组或数据流。
flags 可选。规定如何打开/写入文件。可能的值:
FILE_USE_INCLUDE_PATH
FILE_APPEND
LOCK_EX
context 可选。规定文件句柄的环境。context 是一套可以修改流的行为的选项。
尝试访问文件所在路径,用hackbar访问,可以看到出现PHP版本信息,那么证明此文件是被上传到服务器的了,最后可以进行蚁剑连接,拿取shell
蚁剑连接成功
此时可以遍历目录
这题用到代码审计
更改文件后缀和修改MIME以及增加文件头绕过方法都是行不通的,会出现下边的空白页面
简介:未对数据库表名做验证,通过修改数据库表名可以实现任意代码
漏洞位置:EmpireCMS/e/admin/ebak/phome.php
抓包修改tablename为phpinfo
放包后可以查看到php版本信息
下载下来观察里面的文件信息
readme.txt是没有什么重要信息的
而config.php当中含有写入的phpinfo()
浏览此文件所在的路径,看看会出现是否是PHP版本信息的页面,修改配置文件readme.txt改为config.php
这样是无法连接蚁剑的,尝试将tablename后改为一句话木马
当放包之后会出现表不存在等问题,不过不影响
hackbar后
同上的操作(或者也可以不执行这步,可以从链接当中知道文件的所在路径)
目录遍历,shell拿到了
select … into outfile语句写入php一句话木马
select '' into outfile 'C:/phpStudy/PHPTutorial/WWW/EmpireCMS/e/admin/1.php'
出现下面这种错误明显是不能够成功的,它限制数据库的导入跟导出,判断secure_file_priv = NULL,所以当实战中出现在这种情况下是不能够用这种方法
添加上这句语句在做尝试
显示无法写入文件
漏洞复现文章出处:https://blog.csdn.net/m0_60716947/article/details/128354934
在此位置插入一句话木马,最终
源码当中的一句话木马已经被写入,证明肯定时写入到文件里面了
链接蚁剑,拿取shell
遍历目录
1.在会员中心页面点击修改密码时抓包
将上述的html代码,编写成脚本放到phpstudy下的www目录
通过目录扫描,我们可以知道很多存在漏洞的网页
可以先创建栏目信息
然后点击图片
漏洞页面
#漏洞原理:url地址经过Request函数处理之后,
把url地址中的参数和值部分直接拼接当作a标签的href属性的值和img标签的src标签的值
代码分析
if(Request("url")!=0){
document.write(
"+Request("url")+"\" target=\"_blank\">
+Request("url")+"\" border=0
class=\"picborder\" onmousewheel=\"return bbimg(this)\"
οnlοad=\"if(this.width>screen.width-500)this.style.width=screen.width-500;\">");
分析代码:通过window.location获取当前url地址,根据传入的url参数,获取当前参数的起始位置和结束位置。
代码没有对url的参数做过滤就直接拼接成a和img标签的属性的值,因此可以构造payload:? ?url=javascript:alert(/xss/)
例如,地址是:index.html?url=javascript:alert(document.cookie),经过Request函数处理就变成javascript:alert(document.cookie)
构造payload:
http://192.168.200.16/EmpireCMS/e/ViewImg/index.html?url=javascript:alert(document.cookie)
点击图片可以触发cookie,但是此漏洞我没有复现成功,是在控制器当中输入的javascript:alert(document.cookie)的指令
漏洞存在的文件是在/e/ViewImg/index.html。
分析代码:通过window.location获取当前url地址,根据传入的url参数,获取当前参数的起始位置和结束位置。
代码没有对url的参数做过滤就直接拼接成a和img标签的属性的值,因此可以构造payload:? ?url=javascript:alert(/xss/)
例如,地址是:index.html?url=javascript:alert(document.cookie),经过Request函数处理就变成javascript:alert(document.cookie)
案例:<script>alert(cmd)</script>
http://192.168.200.16/empirecms/e/admin/openpage/AdminPage.php?mainfile=javascript:alert('xss')
别的页面url地址中都会存在hash参数,例如ehash_k3gQY=XJ8adxjZ1pt0wTdqmKO6,参数是随机生成的,如果缺少这个参数,会提示非法来源(都要使用)
重新构造payload,有效!
http://192.168.200.16/empirecms/e/admin/openpage/AdminPage.php?ehash_k3gQY=XJ8adxjZ1pt0wTdqmKO6&mainfile=javascript:alert('xss')
http://192.168.200.16/empirecms/e/admin/openpage/AdminPage.php?ehash_k3gQY=XJ8adxjZ1pt0wTdqmKO6&mainfile=javascript:alert(document.cookie)
http://192.168.200.16/EmpireCMS/e/admin/openpage/AdminPage.php?ehash_xAg67=sKjkNY3V9KKhz7rFcbRC&leftfile=javascript:alert('xss')
http://192.168.200.16/EmpireCMS/e/admin/openpage/AdminPage.php?ehash_xAg67=sKjkNY3V9KKhz7rFcbRC&title=javascript:alert(%27xss%27)
<script>alert(111)</script>
1.此处含有SQL注入,然后用sqlmap执行,此处可能存在延时注入
http://192.168.200.16/EmpireCMS/e/admin/admin.php?ehash_6kKRg=CXVSjNWzn2qTJzbFn8kr
sqlmap执行语句
执行时间过长,判断为延时注入
2.另外此页面下也含有SQL注入,并且判断为延时注入
在此,SQLmap构造的payload在url框中执行没有效果
总结:以上便是根据黑盒测试原理,在未授权的情况下,模拟黑客的攻击方法和思维方式,来评估计算机网络系统可能存在的安全风险。
文章参考:https://xz.aliyun.com/t/9733#toc-6
http://www.taodudu.cc/news/show-4296997.html?action=onClick