0x01-渗透测试课前准备(常用工具准备)

0x01-渗透测试课前准备(常用工具准备)

环境部署

1. Pycharm

  • 添加base interpreter

找到python安装目录选中python.exe

image-20230213092405196

2.Kali更新

kali更新慢编辑配置文件vim /etc/apt/sources.list,注释官方源替换为中科大源#中科大
deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib

# See https://www.kali.org/docs/general-use/kali-linux-sources-list-repositories/
#deb http://http.kali.org/kali kali-rolling main contrib non-free

# Additional line for source packages
# deb-src http://http.kali.org/kali kali-rolling main contrib non-free
#中科大
deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib

任务

1.问题

1. mysql数据库错误

PHPstudy中mysql数据库启动按钮显示启动后立即停止

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WG29LQoX-1676794743029)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230213081539103.png)]

进入mysql安装目录C:\phpstudy_pro\Extensions\MySQL5.7.26\bin>使用命令行进行登录

显示错误

PS C:\phpstudy_pro\Extensions\MySQL5.7.26\bin> .\mysql.exe -uroot -p
Enter password: ****
ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)

通过排查mysql服务未开启 进入计算机管理>服务与应用程序>服务>mysql右击开启服务

PS C:\phpstudy_pro\Extensions\MySQL5.7.26\bin> .\mysql.exe -uroot -p
Enter password: ****
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.26 MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WDfU1XPY-1676794743032)(C:\Users\Administrator\Desktop\屏幕截图 2023-02-13 082102.png)]

成功链接到数据库

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-baiVzxkv-1676794743033)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230213082344916.png)]

2. Nginx降权运行
┌──(kali㉿kali)-[~]
└─$ nginx                         
2023/02/15 02:51:40 [warn] 381928#381928: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:1
2023/02/15 02:51:40 [emerg] 381928#381928: mkdir() "/var/lib/nginx/body" failed (13: Permission denied)

启动Nginx提示需要超级用户

  • 创建用户
┌──(root㉿kali)-[/home/kali]
└─# adduser inca
Adding user `inca' ...
Adding new group `inca' (1002) ...
Adding new user `inca' (1002) with group `inca (1002)' ...
Creating home directory `/home/inca' ...
Copying files from `/etc/skel' ...
  • 切换用户
┌──(root㉿kali)-[/home/kali]
└─# su inca 
┌──(inca㉿kali)-[/home/kali]
└─$ 
  • 创建工作目录
┌──(inca㉿kali)-[~]
└─$ mkdir conf logs www
  • 复制比要组件
┌──(root㉿kali)-[/etc/nginx]
└─# cp /etc/nginx/mime.types /home/inca/conf/
┌──(root㉿kali)-[/etc/nginx]
└─# cp /etc/nginx/nginx.conf /home/inca/conf/
  • 修改文件路径
user inca inca;
worker_processes auto;
pid /home/inca/logs/nginx.pid;
error_log /home/inca/logs/error.log;
include /home/inca/config/*.conf;

events {
        worker_connections 768;
        # multi_accept on;
}

http {
        sendfile on;
        tcp_nopush on;
        types_hash_max_size 2048;

        include /home/inca/conf/mime.types;
        default_type application/octet-stream;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
        ssl_prefer_server_ciphers on;
 
        access_log /home/inca/logs/access.log;

        gzip on;
        server {
                listen       8080;
                server_name  localhost;
                root  /home/inca/www;
                location / {
                index  index.html index.htm;
                }
                error_page   500 502 503 504  /50x.html;
                location = /50x.html {
                        root   html;
                }
                access_log  /home/inca/logs/access.log;
        }

        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
}

  • 启动nginx
┌──(inca㉿kali)-[~/conf]
└─$ /usr/sbin/nginx -c /home/inca/conf/nginx.conf 
2023/02/15 03:52:12 [warn] 399471#399471: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /home/inca/conf/nginx.conf:1
  • Curl请求
┌──(inca㉿kali)-[~/conf]
└─$ curl 10.8.81.193:8080
yks-inca nginx JQ

2.Docke与虚拟机(VMWare VirtualBox等)区别

  1. Docker 启动速度相较于虚拟机(VMWare VirtualBox等)更快,Docker 需要更少的资源。

  2. 在隔离性上,Docker属于进程之间的隔离,隔离性较弱,虚拟机(VMWare VirtualBox等)属于系统级别的隔离

  3. Docker容器里的程序直接使用物理机的硬件资源,虚拟机(VMWare VirtualBox等)是通过模拟硬件实现安装操作系统

  4. 网络区别

    • docker有四种模式host模式、none模式、bridge模式、container模式。默认使用bridge模式
    • 虚拟机(VMWare VirtualBox等)NAT模式、桥接模式、Host模式
    • docker中的bridge模式与虚拟机的NAT模式相似
    • docker中的host模式类似于虚拟机的桥接模式但不会分配独立IP地址,使用宿主机的ip和端口
    • docker中的container模式,创建的新容器与某个容器共享一个Network workspace

3. 不同版本的开发环境共存

1. 共存方式

通过修改环境变量中的Path指向位置,path中多条路径指向不同文件夹下的同名文件系统会以写在前面为优先

实现不同版本开发环境并存通过

  • 修改环境变量,使指定版本为当前开发环境
  • 修改文件名例如java8.exe java19.exe
2. 以java8与java19共存为例

添加JAVA_HOME JAVA8_HOME JAVA19_HOME 三个环境变量,其中JAVA8_HOME JAVA19_HOME 路径为对应java版本。JAVA_HOME存放所需java版本。例如使用JAVA8JAVA_HOME值为 %JAVA8_HOME%,然后在PATH中添加 %JAVA_HOME%\bin

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Nd0sFPYI-1676794743035)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230213091256384.png)]

使用JAVA8时

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OMYIuH9g-1676794743036)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230213090322604.png)]

PS C:\Users\Administrator> java -version
java version "1.8.0_361"
Java(TM) SE Runtime Environment (build 1.8.0_361-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.361-b09, mixed mode)
使用JAVA19时

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AVtzEukv-1676794743037)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230213090440142.png)]

PS C:\Users\Administrator> java -version
java version "19.0.1" 2022-10-18
Java(TM) SE Runtime Environment (build 19.0.1+10-21)
Java HotSpot(TM) 64-Bit Server VM (build 19.0.1+10-21, mixed mode, sharing)

4.LNMP可能存在的问题

1. PHP
  1. 允许远程或者本地文件包含,导致任意文件读取或者恶意代码执行

    • 防御:设置白名单对传入的文件名过滤、过滤危险字符例如…/、设置文件目录仅在该目录搜索文件、关闭危险配置例如allow_url_include、启用PHP安全模式
  2. sql注入

    • 防御:转义用户的输入或者使用封装好的的语句
  3. csrf

    • 防御:使用令牌,存储到session、cookie进行比对
  4. 命令注入

    • 防御转义用户输入、过滤关键字、白名单
  5. 危险函数

    例如:system, passthru, exec, shell_exec, popen, phpinfo, escapeshellarg, escapeshellcmd, proc_close, proc_open

    • 防御:开启PHP安全模式、配置disable_functions关闭危险函数
  6. PHP版本信息在header泄露

    • 防御:配置expose_php = off
2. MYSQL
  1. 匿名账号登录
    • 防御:删除数据库创建是建立的匿名账号
  2. root默认空密码
    • 防御:修改root账号的空密码
  3. 弱口令
    • 防御:设置较为复杂的口令
  4. user表权限
    • 设置user表的除了root外用户无权
  5. 远程访问
    • 防御:非必要关闭远程访问、限制固定IP访问
3. Nginx
  1. 前代版本中存在的各类漏洞

    • 防御:更新Nginx版本或者安装厂商补丁
  2. 错误页面展示版本号

    • 防御:在nginx.conf中禁用server_token
  3. 目录浏览

    • 防御:禁止目录浏览 配置autoindex off
  4. nginx 降权运行

    • 使用nobody 运行nginx
  5. 目录执行权限

    • 防御:限制目录执行权限在ngin.conf中的server标签配置

      location ~
      /(attachments|upload)/.*\.(php|php5)?$ {
      deny all;
      }
      
4. Linux
  1. 弱口令

    • 防御:设置账号密码较为复杂,较为复杂的密码策略
  2. 密码策略

    • 修改文件/etc/login.defs

      PASS_MAX_DAYS      90               密码最长有效期 
      PASS_MIN_DAYS      10               密码修改之间最小的天数 
      PASS_MIN_LEN       8                密码长度 
      PASS_WARN_AGE      7                口令失效前多少天开始通知用户修改密码
       
      
  3. 用户登录

    • 防御:禁止root用户远程登录配置/etc/ssh/sshd_config 、更改SSH端口

      PermitRootLogin   no
      
  4. 对外端口

    • 防御:关闭不必要的端口
  5. 账户保存历史命令条数

    • 编辑/etc/profile

      HISTSIZE=1000
      TMOUT=600 
      
  6. 开启用户登录和操作日志

    • 编辑/etc/profile
     history
     USER=`whoami`
     USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
     if [ "$USER_IP" = "" ]; then
     USER_IP=`hostname`
     fi
     if [ ! -d /var/log/history ]; then
     mkdir /var/log/history
     chmod 777 /var/log/history
     fi
     if [ ! -d /var/log/history/${LOGNAME} ]; then
     mkdir /var/log/history/${LOGNAME}
     chmod 300 /var/log/history/${LOGNAME}
     fi
     export HISTSIZE=4096
     DT=`date +"%Y%m%d_%H:%M:%S"`
     export HISTFILE="/var/log/history/${LOGNAME}/${USER}@${USER_IP}_$DT"
     chmod 600 /var/log/history/${LOGNAME}/*history* 2>/dev/null
    

5.常用浏览器插件

  1. Wappalyzer

    • 网站技术栈分析包括:平台建构、网站环境、服务器配置环境、JS框架、编程语言等
  2. Proxy SwitchOmega

    • 快捷管理和切换代理
  3. Hackbar

    • 可以测试SQL 注入和 XSS 攻击,能够快速对字符串进行各种编码。
  4. CrytoFox

    • 加密和解密的工具
  5. DNS Checker

    • 提供网站iip、地理位置、服务提供商的信息
  6. HTTP Header Live

    • 修改cookie,查看header
  7. Firebug

    • 火狐下扩展能调试所有网站语言
  8. User-Agent Switcher

    • 用于改变浏览器 User-Agent
  9. Cookie Hacker

    • cookie注入工具
  10. Hack Tools

    • 针对 Web 应用程序渗透测试的 Web 扩展,其中包含了大量测试工具,比如说 XSS Payload 和反向 Shell 等
  11. Penetration Testing Kit

    • 分析客户端 / 服务器端技术并检查任何第三方库以获取现有的 CVE
  12. Shodan

    • 自动探测网站所属的国家、城市,谁是这个网站IP的主人以及其开放的服务和端口,包括FTP、DNS、SSH或者其他非主流服务
  13. JSONView

    • 格式化 JSON 数据,可以增加 JSON 的可读性
  14. FindSomething

    • 在网页的html源码或js代码中提取信息,包括可能请求的资源、接口的url,可能请求的ip和域名,泄漏的证件号、手机号、邮箱等信息
  15. OSVDB

    • 开放源码的漏洞数据库检索
  16. XSS Me

    • XSS测试扩展
  17. FOFA Pro View

    • 网站的托管位置(国家、城市)、IP 的所有者 以及开放的其他服务/端口

6.终端工具共性

终端工具运行命令一般由三部分组成:命令对象、修饰命令对象、命令内容

例如 sql -u URL,修饰命令对象的这部分有时可有可无。

快速上手终端工具例如sqlmap ,使用sqlmap -h 或者sqlmap --help查看帮助信息,通过帮助信息大致了解终端工具的使用方法。

                                                                                        
┌──(kali㉿kali)-[~]
└─$ sqlmap -h
        ___
       __H__
 ___ ___[,]_____ ___ ___  {1.6.11#stable}
|_ -| . ["]     | .'| . |
|___|_  ["]_|_|_|__,|  _|
      |_|V...       |_|   https://sqlmap.org

Usage: python3 sqlmap [options]
Options:
  -h, --help            Show basic help message and exit
  -hh                   Show advanced help message and exit
  --version             Show program's version number and exit
  -v VERBOSE            Verbosity level: 0-6 (default 1)
  Target:
    At least one of these options has to be provided to define the
    target(s)
    -u URL, --url=URL   Target URL (e.g. "http://www.site.com/vuln.php?id=1")
    -g GOOGLEDORK       Process Google dork results as target URLs
  Request:
    These options can be used to specify how to connect to the target URL

    --data=DATA         Data string to be sent through POST (e.g. "id=1")
    --cookie=COOKIE     HTTP Cookie header value (e.g. "PHPSESSID=a8d127e..")
    --random-agent      Use randomly selected HTTP User-Agent header value
    --proxy=PROXY       Use a proxy to connect to the target URL
    --tor               Use Tor anonymity network
    --check-tor         Check to see if Tor is used properly

更加详细的使用方法,可以通过manual手册查看更加详细的描述

man mysql

SQLMAP(1)                                User Commands                               
NAME
       sqlmap - automatic SQL injection tool
SYNOPSIS
       python3 sqlmap [options]
OPTIONS
       -h, --help
              Show basic help message and exit
       -hh    Show advanced help message and exit
       --version
              Show program's version number and exit
       -v VERBOSE
              Verbosity level: 0-6 (default 1)

ual手册查看更加详细的描述

man mysql

SQLMAP(1)                                User Commands                               
NAME
       sqlmap - automatic SQL injection tool
SYNOPSIS
       python3 sqlmap [options]
OPTIONS
       -h, --help
              Show basic help message and exit
       -hh    Show advanced help message and exit
       --version
              Show program's version number and exit
       -v VERBOSE
              Verbosity level: 0-6 (default 1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值