[转] 安全面经个人复盘(一)
转载自:CCALT,本文转载已获得作者授权
原文格式与超链接请查看原文
1、渗透测试的流程
1、信息收集:whois、网站源IP、旁站、C段网站、服务器系统版本、容器版本、程序版本、数据库类型、二级域名、防火墙、维护者信息
2、漏洞扫描:Nessus, AWVS
3、手动挖掘:Webshell,SSRF,XSS,逻辑漏洞,SQL注入,弱口令等等
4、验证漏洞
2、XSS获取平台
各有各的,这里不说自己的平台了
3、XSS漏洞修补方式
1、输入编码转义
2、白名单过滤
3、添加Http-only尽量降低XSS的危害
4、XSS的绕过方法
1、双写绕过,例如在过滤domain为空时,可以通过domdomainaim进行绕过测试。
2、编码绕过,例如Payload: ">
3、空格绕过,例如:">XSS还有注释干扰,伪协议、空格Tab回车,css等绕过方法
5、Mysql注入写入一句话条件
1、获取网站可写目录的绝对路径OUTFILE
2、root权限 3、没有配置–secure-file-priv
6、Mysql注入写入一句话的函数
OUTFILE
7、Sql注入的修复方式
1、所有的查询语句都使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。当前几乎所有的数据库系统都提供了参数化SQL语句执行接口,使用此接口可以非常有效的防止SQL注入攻击。
2、对进入数据库的特殊字符(’”\尖括号&*;等)进行转义处理,或编码转换。
3、严格限制变量类型,比如整型变量就采用intval()函数过滤,数据库中的存储字段必须对应为int型。
4、数据长度应该严格规定,能在一定程度上防止比较长的SQL注入语句无法正确执行。
5、网站每个数据层的编码统一,建议全部使用UTF-8编码,上下层编码不一致有可能导致一些过滤模型被绕过。
6、严格限制网站用户的数据库的操作权限,给此用户提供仅仅能够满足其工作的权限,从而最大限度的减少注入攻击对数据库的危害。
7、避免网站显示SQL错误信息,比如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行一些判断。
8、Sql参数化查询
参数化查询(Parameterized Query 或 Parameterized Statement)是指在设计与数据库链接并访问数据时,在需要填入数值或数据的地方,使用参数 (Parameter) 来给值,这个方法目前已被视为最有效可预防SQL注入攻击 (SQL Injection) 的攻击手法的防御方式。在使用参数化查询的情况下,数据库服务器不会将参数的内容视为SQL指令的一部份来处理,而是在数据库完成SQL指令的编译后,才套用参数运行,因此就算参数中含有指令,也不会被数据库运行。Access、SQL Server、MySQL、SQLite等常用数据库都支持参数化查询。
9、Mysql的报错注入的函数
floor(),extractvalue(),updatexml(),exp()
10、Mysql的时间注入的函数
sleep(),benchmark(),笛卡尔积,GET_LOCK()加锁,RLIKE REGEXP正则匹配
11、SQLMAP常用命令
GET方式sqlmap -u "url" //这个URL必须含 POST方式sqlmap -u http://testasp.vulnweb.com/Login.asp --data "tfUName=1&tfUPass=1" cookie注入sqlmap -u "url" --cookie "chsadj" --level 2 等等
12、SQLMAP -R参数的使用
-r 1.txt 对于用post方法提交的,参数不在URL里面的网页,可以先截获数据,保存成文件再用这个参数执行
13、SQLMAP
GET型注入中许多参数只取其中一种 --param-del
14、SQLMAP其他参数的使用
--random-agent 使用随机的user-agent --header="\n" 指定头信息,如User-Agent:dsacs,大小写敏感,多个用\n分隔 --delay 请求延迟间隔,单位秒,默认无延迟 --level 设置检查的等级等
15、Sql注入宽字节注入原理
首先说下概念,GB2312、GBK、GB18030、BIG5、Shift_JIS等这些都是常说的宽字节,实际上只有两字节。宽字节带来的安全问题主要是吃ASCII字符(一字节)的现象,即将两个ascii字符误认为是一个宽字节字符。 GBK 占用两字节,ASCII占用一字节,PHP中编码为GBK,函数执行添加的是ASCII编码(添加的符号为“\”),MYSQL默认字符集是GBK等宽字节字符集。 %df’ 被PHP转义(开启GPC、用addslashes函数,或者icov等),单引号被加上反斜杠\,变成了 %df\’,其中\的十六进制是 %5C ,那么现在 %df\’ =%df%5c%27,如果程序的默认字符集是GBK等宽字节字符集,则MySQL用GBK的编码时,会认为 %df%5c 是一个宽字符,也就是縗,也就是说:%df\’ = %df%5c%27=縗’,有了单引号就好注入了。
16、常见的逻辑漏洞
订单金额任意修改,验证码回传,未进行登陆凭证验证,接口无限制枚举,平行越权,垂直越权和交叉越权等等
17、Nmap使用
nmap -T4 -A -v ip nmap最好用命令 nmap ip/24 扫描目标所在网段 nmap -iL C:\targets.txt 扫描主机列表targets.txt中的所有目标地址 nmap ip/24 -exclude ip 扫描除某个地址以外的地址 nmap ip -p 21,22 扫描某一地址的端口21,22
18、Burp抓取返回包3种方法
1、proxy模块抓取包右键Do intercept选取Response to this request
2、proxy模块抓取包放入Repeater放行
3、设置中勾选参数即可每个包都返回响应包
19、渗透过程中有趣的漏洞
各有各的
20、XSS获取他人Cookie运用进行下一步渗透
如果获取的是普通用户Cookie则可以提交SRC,意义不大,若是获取管理员Cookie则可以进去后台进行下一步的渗透例如上传Webshell等等
21、半年之内常见的组件和中间件漏洞
IIS
1、PUT漏洞
2、短文件名猜解
3、远程代码执行
4、解析漏洞
Apache
1、解析漏洞
2、目录遍历
Nginx
1、文件解析
2、目录遍历
3、CRLF注入
4、目录穿越
Tomcat
1、远程代码执行
2、war后门文件部署
jBoss
1、反序列化漏洞
2、war后门文件部署
WebLogic
1、反序列化漏洞
2、SSRF
3、任意文件上传
4、war后门文件部署
其它中间件相关漏洞
1、FastCGI未授权访问、任意命令执行
2、PHPCGI远程代码执行
22、struts2/fuckjson/weblogic/websphere等漏洞
struts2漏洞传送门(一)、struts2漏洞传送门(二) fastjson漏洞 websphere漏洞
23、应急响应
参考文章https://github.com/Bypass007/Emergency-Response-Notes
24、 windows和Linux日志溯源
windows:win+R运行eventvwr进入事件查看器 Linux:/var/log下的日志 Web:查看Apache、Nginx、Mysql日志
25、爬虫脚本常用到哪些库
requests、json、lxml、BeautifulSoup、pyquery等
26、解析服务器H5语言提取关键信息
BeautifulSoup
27、常见的爬虫框架
pyspider、scrapy、Crawley、Portia、selenium等
28、Linux命令创建用户
useradd和adduser,建议使用adduser会自动进入创建密码、目录等
29、Linux命令删除用户
userdel和deluser,建议使用deluser会自动删除用户目录等相关文件
30、Linux命令切换用户
su username 切换用户
31、Linux命令显示用户组
首先cat /etc/passwd|grep username查找用户所在组ID cat /etc/group查看所有组信息找到组ID对应名 PS:groups查看当前登录用户组内成员
32、Linux命令whereis Linux whereis命令用于查找文件。
-b 只查找二进制文件。 -B<目录> 只在设置的目录下查找二进制文件。 -f 不显示文件名前的路径名称。 -m 只查找说明文件。 -M<目录> 只在设置的目录下查找说明文件。 -s 只查找原始代码文件。 -S<目录> 只在设置的目录下查找原始代码文件。 -u 查找不包含指定类型的文件。
33、Linux命令awk
AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。 awk '{[pattern] action}' {filenames} # 行匹配语句 awk '' 只能用单引号 awk -F #-F相当于内置变量FS, 指定分割字符 awk -v # 设置变量 awk -f {awk脚本} {文件名}
34、Linux命令创建目录
mkdir dirname PS:mkdir -p确保目录名称存在,不存在的就建一个。
35、Linux命令删除目录和文件
rm -r dirname删除目录 rm filename 删除文件 PS:-i 删除前逐一询问确认,-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。-r 将目录及以下之文件删除。 谨慎使用rm -rf /*
36、Linux命令杀死进程
首先top或者ps,建议使用ps,因为top是实时信息并不是找到进程号的最快手段 使用ps aux | grep XXXX,例如ps aux | grep chrome可以快速找到与chrome相关的进程 然后kill -9 PID PS:ps命令参数a =为所有用户显示进程,u =显示进程的用户/所有者,x =还显示未附加到终端的进程 kill 1=挂断,2=从键盘终端,9=杀死信号,15=中断信号,17、19、23=停止进程
37、Linux命令查看定时命令
crontab -l 列出目前的定时任务 PS:crontab -e 写入新的定时任务 crontab -r 删除当前的定时任务(谨慎使用)
38、Linux命令改变目录权限
chmod 4+2+1 filename PS:chown username filename 修改文件所有人 chgrp groupname filename 修改文件所在组