笔试面试准备
a、信息收集
1.获取域名的whois信息,获取注册者邮箱姓名电话等,丢社工库里看看有没有泄露密码,然后尝试用泄露的密码进行登录后台。
用邮箱做关键词进行丢进搜索引擎。利用搜索到的关联信息找出其他邮箱进而得到常用社交账号。社工找出社交账号,里面或许会找出管理员设置密码的习惯 。利用已有信息生成专用字典。
查看服务器旁站及子域名站点,是否具又通用性漏洞
2、查询服务器旁站以及子域名站点
所以先看看旁站有没有通用性的cms或者其他漏洞。
3、查看服务器操作系统版本,web中间件
看看是否存在已知的漏洞,比如IIS,APACHE,NGINX的解析漏洞
4、查看IP,进行IP地址端口扫描
对响应的端口进行漏洞探测,比如 rsync,心脏出血,mysql,ftp,ssh弱口令等。
5、扫描网站目录结构,
可以利用Dirsearch工具,看看是否可以遍历目录,或者敏感文件泄漏,比如php探针
6、google hack 进一步探测网站的信息,后台,敏感文件
b、漏洞扫描
sql注入
报错注入常用函数
1、floor()
2、updatexml(xml_doument,XPath_string,new_value)
第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc
第二个参数:XPath_string (Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程。
第三个参数:new_value,String格式,替换查找到的符合条件的数据
and updatexml(1,concat(0x7e,(),0x7e),1) –+一共可以接收三个参数,报错位置在第二个参数.
3、extractvalue()
updatexml使用三个参数,extractvalue只有两个参数。
and extractvalue(1,concat(0x7e,())) –+一共可以接收两个参数,报错位置在第二个参数
时间盲注
时间盲注是利用sleep函数造成延时,判断是否可以进行注入,由于页面无法返回正确或错误的值,需要通过判断语句,类似布尔注入,通过if和sleep函数来逐步判断范围,需要用到的函数格式如下:
if(判断语句,x,y)如果判断语句正确则输出X,否则输出Y
if(1=1,1,sleep(1)),可以输入1
if(1=2,1,sleep(1)),会sleep1秒后在进行回显
post注入:post注入是通过对输入框进行传参,可以被带入数据库进行的查询
1.查询是否有注入点
对输入框填入一些闭合的符号,看页面是否异常
2。order by 语句查询有几个字段
3.使用union 联合查询 显错点,输出点
4.查询当前库名 “) union select 1,database()#
5。查表名,利用当前库名查系统表
") union select 1,group_concat(table_name) from information_schema.tables where table_schema=“security” #
6。查字段名
") union select 1,2,group_concat(column_name) from information_schema.columns where table_name=“zkaq” #
7.查表内的信息
")union select group_concat(flag),group_concat(zKaQ) from zkaq # sqlmap工具使用 [SQLMap](https://so.csdn.net/so/search?q=SQLMap&spm=1001.2101.3001.7020)是一款开源的渗透测试工具,它可以自动检测和利用SQL注入漏洞,并对数据库执行相应的攻击。常用的方法主要有两种,一种针对get传参扫描,一种针对post传参扫描,不同的请求扫描方式如下: 1. get 请求: python sqlmap.py -u [http://127.0.0.1/DVWA-master/vulnerabilities/sqli/?id=1](http://127.0.0.1/DVWA-master/vulnerabilities/sqli/?id=1) 2. post 请求:首先通过burpsuite抓包,把请求包的信息保存到文件中,通用sqlmap -r 读取请求包信息 XSS 1.反射型:与服务端交互,但是交互的数据一般不会被存在数据库中,一次性,所见即所得,一般出现在查询类页面等 2.存储型:交互的数据会被存在数据库中,永久性存储,一般出现在留言板,注册等页面等 3.DOM型: 1..DOM xss 通过js代码操作dom文档对象模型时触发的漏洞,不与后台服务器产生数据交互,是一种通过DOM操作前端代码输出的时候产生的漏洞,大部分属于反射型,少部分属于存储型。 2一般不与服务端进行交互 XSS防御的过滤方式: 1.JS代码前端过滤 2.输入长度的限制 3.后端逻辑通过正则匹配来过滤输入,匹配关键字输入 1.过滤:"<"、"script"、">"等字符 XSS绕过方式: 1.通过抓包直接,在数据包中修改发送到后端,修改前端代码的长度限制 2.通过大小写混合,复写 文件上传 CSRF CSRF原理:   跨站请求伪造 1.当我们打开网站或者登陆某个网站后,就会产生一个会话(这里指用户登陆后),这个会话可能是**SESSION,Cookie**控制,在会话未结束时,恶意网站利用目前的权限对网站做出相关操作,通过伪造信息通过用户的浏览器的cookie进行请求操作。 而CSRF攻击则是建立会话之上的攻击。比如当你登陆了网上银行,正在进行转账业务,这时你的某个QQ好友(攻击者)发来一条消息(URL),这条消息是攻击者精心构造的转账业务代码。而且与你所登录的网站是同一个银行,你可能认为这个网站是安全的,并不是什么钓鱼网站之类的,然后打开了这条URL,那么你的账户的钱可能就在你的这一次小小点击上全部丢失。怎么可能这么神奇呢?其实这并不神奇。主要是因为你的浏览器正处于与此网站的会话之中,那么一些操作都是合法的,而入侵者构造的这段代码只不过是正常的转账操作代码而己。比如说你想给用户spisec转账1000元,那么点击提交按钮之后,可能会发送以下请求: **问题1.SESSION和Cookie区别** **
Session的主要作用就是通过服务端记录用户的状态。** **典型的场景是购物车,当你要添加商品到购物车的时候,系统不知道是哪个用户操作的,因为 HTTP 协议是无状态的。服务端给特定的用户创建特定的
Session之后就可以标识这个用户并且跟踪这个用户了。
Cookie 数据保存在客户端(浏览器端),
Session数据保存在服务器端。 相对来说
Session安全性更高。如果使用
Cookie的一些敏感信息不要写入
Cookie中,最好能将
Cookie` 信息加密然后使用到的时候再去服务器端解密。**
1.用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;
2,在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;
3.用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;
4.网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;
5.浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户c的Cookie信息以c的权限处理该请求,导致来自网站B的恶意代码被执行。
代码执行
命令执行
越权访问
目录读取
任意文件读取、下载
文件包含
远程命令执行
弱口令
编辑器漏洞,
暴力破解等
技术工具情况
NMAP使用
Sqlmap使用
c、漏洞利用
利用以上的方式拿到webshell,或者其他权限
d、权限提升
提权服务器,比如windows下mysql的udf提权,serv-u提权,windows低版本的漏洞,如iis6,pr,巴西烤肉,linux脏牛漏洞,linux内核版本漏洞提权,linux下的mysql system提权以及oracle低权限提权
e、日志清理
f、总结报告及修复方案