Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    86375766

Contributors to this blog

  • HireHackking 16114

About this blog

Hacking techniques include penetration testing, network security, reverse cracking, malware analysis, vulnerability exploitation, encryption cracking, social engineering, etc., used to identify and fix security flaws in systems.

0#awd

とは何か

0.1#AWD競争システムの紹介

「時折の防御モード| AWD(防衛での攻撃)」は、CTFコンペティションのいくつかの主要なゲームモードの1つです。

このモードでは、各チームには、通常、セキュリティの脆弱性を含む特定のサービスまたはアプリケーションを実行するのと同じ初期環境(GameBoxと呼ばれます)を持っています。参加チームは、ポイントを取得するためにフラグを取得するために、相手のチームのサービスのセキュリティの脆弱性を活用する必要があります。同時に、参加チームは、他のチームによって攻撃されて獲得されるのを防ぐために、彼らに対して防御するために独自のサービスの脆弱性にパッチを当てる必要があります。

主な特徴は、実用性、現実のタイミング、対立を強調し、競争チームの浸透と保護能力を包括的に考慮することです。

0.2#競合の全体的なプロセス

試合前の準備セッション:通常、SSHまたはVNCユーザー名とパスワードに割り当てられた複数のターゲットサーバー、および関連するIPおよびその他の情報を割り当てます

セキュリティ補強リンク:ターゲットマシンサーバーに自分でログインし、30分間のセキュリティ強化を実行する必要があります(ソースコードのバックアップ/弱いパスワードの変更/コード監査と修理/脆弱性の修理など)

無料攻撃リンク:セキュリティ強化時間が経過した後、無料攻撃リンクが開始されます。他のチームのターゲットサーバー(弱いパスワード/Web脆弱性/システムの脆弱性など)を攻撃して追加ポイントを獲得し、対応するチームはポイントを失います。

1#競争環境

通常、競争環境には3つの状況があります。

ハイブリッドターゲットマシンの状況:操作およびメンテナンスマシンWindows10+攻撃機Kali Linux+ Win Target Machine Windows Server 2003/2008/2012またはWindows 7+ Linux Target Machine Centos7.xまたはUbuntu 16.04/17.01/20.04

純粋なLinuxターゲットマシンの状況:操作およびメンテナンスマシンWindows10+攻撃機Kali Linux+ Linux Target Machine Centos7.xまたはUbuntu 16.04/17.01/20.04

純粋なWindowsターゲットマシンの状況:操作およびメンテナンスマシンWindows10+攻撃機Kali Linux+ Win Target Machine Windows Server 2003/2008/2012またはWindows7

2#セキュリティ補強プロセス(防衛)

2.0#基本補強プロセス

2.0.1 Windows補強プロセス

バックアップファースト:Webソースコード、データベース

445強化、ファイアウォールまたはIP高度なセキュリティポリシーを有効にします

システムログ監査機能をオンにします

ゲストアカウントを無効にし、ファイル共有を閉じます

スタートアップアイテムのコンテンツが制御可能であることを確認してください

リモートアクセスコントロールへの接続の数を制限する:ローカルグループポリシーエディターでは、コンピューター構成- 管理テンプレートウィンドウコンポーネントリモットデスクトップサービスリモートデスクトップセッションホストコネクションリミット接続の数を拡大します

ツールを使用して、キーディレクトリファイル:ファイル操作監視、exe、yujian file monitoring.exeを監視します。

PchunterとMonitorを介して検索された悪意のあるコードファイル

Webディレクトリ環境で関連する疑わしいファイルの検索:JPG/PNG/RAR、属性の表示、解凍、ファイルの内容の表示

NTFSはディスクをスキャンして、隠された交換フローデータを見つけます

システム内のすべてのアカウント情報を見つけ、非管理者アカウントを禁止します。

Webサイト管理者のアクセスパス、デフォルトのパスワード、およびデータベースパスワードを変更する

WAFスクリプトをインストールしてWebサイトを保護し、他の脆弱性を禁止します

2.0.2 Linux補強プロセス

バックアップ最初:Webソースコード、データベース

システムパスワード、統一されたチームパスワードを変更します

.bash_historyを介して履歴コマンドを検索し、痕跡を見つけます

スケジュールされたタスクを表示:Crontab -L;スケジュールされたタスクの編集:Crontab -E

/etc/init.d/rc.localのスタートアップサービスに例外があるかどうかを確認してください

スクリプトを使用して、プロセスの監視、ディレクトリ監視、トラフィック監視を可能にします

Webサイトのパスワード、サイト管理者パスの変更

システム強化:IPTABLE

2.1#基本情報コレクション

防御する場合、情報収集も非常に重要です。 sayingにあるように、「あなた自身とあなたの敵を知ってください、あなたは100の戦いで決して敗北することはありません。」

2.1.1 Linuxマシン情報を明確にする

UNAME -A //システム情報

ps -aux //クエリプロセス情報

ps -ef | GREPプロセス名//指定されたプロセスをフィルタリングします

ID //ユーザーIDとグループIDを表示するために使用されます

cat /etc /passwd //ユーザーの状況を表示します

LS/HOME///ユーザーの状況を確認してください

/-type d -perm -002 //書き込み可能なディレクトリチェックを見つけます

ifconfig //Linuxでネットワークカード情報を表示します

2.1.2 Windowsマシン情報を明確にする

hoami /all //Windowsでユーザーの詳細を表示します

ipconfig /all //Windowsでネットワークカード情報を表示します

2.1.3オープンポートを表示

Netstat //アクティブ接続を表示します

netstat -ano/-a //ポートステータスを確認します

netstat -Anp //ポートを表示します

Firewall-CMD -Zone=public - remove-port=80/tcp –permanent //ポートを閉じます

ファイアウォール-CMD –RELOAD //ファイアウォールを再起動します

2.1.4デフォルトのパスワード(弱いパスワード)変更

弱いパスワード攻撃を防ぐために、mysqlパスワードはデフォルトでルートです、phpstudyデフォルトパスワード123456

他のデフォルトのパスワード管理者、TOP100、TOP1000などがあります。

特に、WebアプリケーションPassWDユーザー名のバックグラウンドパスワードの変更//SSHパスワードの変更

mycms@localhost=password( '18ciweufhi28746')のパスワードを設定します。 //mysqlパスワードの変更

find/var/www/html -path '*config*' //構成ファイルでパスワード資格情報を見つける

2.1.5ローカルフラグを見つけます

GREP -R 'Flag'/var/www/html ///Linux:Webディレクトリでフラグを見つける

findstr /s /i 'flag' *

2.1.6 Ping無効の設定

echo '1'/proc/sys/net/ipv4/icmp_echo_ignore_all //一時的にping禁止を有効にします

echo '0'/proc/sys/net/ipv4/icmp_echo_ignore_all //ping禁止を閉じます

2.2#Webセキュリティ強化

2.2.1バックアップソースコード

ソースコードを変更する際の問題を防ぐ、または攻撃された当事者がソースコードを削除して準備する

圧縮ソースコード:

TAR -CVF Web.tar/var/www/html

zip -q -r web.zip/var/www/html

ソースコードを解凍します:

tar -xvf web.tar -c/var/www/html

unzip web.zip -d/var/www/html

バックアップソースコード:

MV web.tar /tmp

MV web.zip /home /xxx

ソースコードをアップロードしてダウンロードします:

scp username@servername:/path/filename/tmp/local_destination //サーバーからローカルに単一のファイルをダウンロード

scp/path/local_filename username@servername:/path //ローカルからサーバーへの単一のファイルから

scp -r username@servername:remote_dir//tmp/local_dir //ディレクトリ全体をサーバーからローカルにダウンロードする

scp -r /tmp /local_dir username@servername3360remote_dir //ディレクトリ全体をローカルからサーバーにアップロードします

2.2.2読み取り専用権限を設定

Webファイルの読み取り専用および実行権限を設定します(PHPなどの動的言語には実行権限が必要です)

chmod 0555/var/www/html/*

Chmod 0555 /var/www/html/*.php

Webルートディレクトリで読み取り専用および実行権限を設定します

Chmod 0555/var/www/html

ファイルの所有者とグループを変更して、厳密なアクセス許可を設定します

chown -r root:root/var/www/html///所有者をroot:rootまたはhttpd:httpd(推奨)として設定します

chown -r apache:apache/var/www/html///apacheが/var/www/htmlを持っていることを確認してください

2.2.3構成.htaccess

PHPファイルの実行を禁止するために.htaccess構成ファイルを使用します

ディレクトリ '/var/www/html/upload' //指定されたディレクトリの後続の指示がディレクトリに適用されます

Options -EXECCGI -INDEXES //CGI実行およびディレクトリインデックス(ディスプレイディレクトリコンテンツリスト)ディレクトリの関数は無効です。

AllowOverrideなし//.htaccessファイルを使用してこのディレクトリのサーバーの構成を上書きすることができません。

removehandler .php .phtml .php3 .pht .php4 .php5 .php7 .shtml

RemoveType .php .phtml .php3 .pht .php4 .php5 .php7 .shtml

//これらの2つの命令指定されたファイル拡張子のプロセッサとタイプを削除します。

//この場合、これらのディレクティブは、Apacheの処理リストからPHP関連の拡張機能とサーバー側インクルージョン(SSI)ファイルタイプを削除します。

PHP_FLAGエンジンオフ//このディレクティブは、PHPエンジンフラグ(エンジン)をオフに設定するため、このディレクトリでPHPスクリプトを実行する機能を無効にします。

filesmatch '。+\。ph(p [3457]?| t | tml)$'

すべてから否定します

/filesmatch //これらの3行のコマンドは、正規表現を使用して、php、phpp、php3、pht、php4、php5、php7、shtmlで終了するファイルを一致させ、アクセス許可を設定してすべてを拒否します

/ディレクトリ

2.2.4 PHPパラメーターセキュリティ構成

最初にPHP構成ファイルを見つけます

/etc/php/{version }/php.ini

高リスク関数を無効にします

disable_functions=dl、exec、system、passthru、popen、proc_open、pcntl_exec、shell_exec、mail、imap_open、imap_mail、putenv、ini_set、apache_setenv、symlink、link

Open_basedirを構成します(指定された領域にユーザーアクセスファイルのアクティビティ範囲を制限します)

open_basedir=/var/www/html

魔法の引用を無効にする(SQL注入を防ぐために外部ソースデータを自動的に逃がす)

MAGIC_QUOTES_GPC=OFF

PHP擬似プロトコルを閉じます

Allow_url_fopen=off

Allow_url_include=off

PHPを再起動します

sudoサービスphp7.0-fpm再起動

sudo systemctl再起動php7.0-fpm.service

2.3#データベースセキュリティ補強

2.3.1 mysql補強

弱いパスワード攻撃を防ぐために、mysqlパスワードはデフォルトでルートです、phpstudyデフォルトのパスワード123456

デフォルトのパスワードを使用しないで、それを複雑に変更し、Web環境との接続を確認しないでください

設定ローカル127.0.0.1アカウントログインのみを許可します:bind-address=127.0.0.1を変更します。 secure_file_priv=nullを構成ファイルに追加します

ログ監査機能をオンにします:general_log_file=path

MySQLデータベースが最も一般的に使用されているため、基本的な攻撃と防御のほとんどはMySQLデータベースコマンドの使用に使用されます

指定されたデータベースをバックアップします:

mysqldump –u username –pパスワードdatabasename target.sql

すべてのデータベースをバックアップします:

mysqldump –All -database all.sql

データベースをインポートします。

mysql –u username –pパスワードデータベースfrom.sql

mysqlの攻撃と防御については、この記事を読むことができます:https://blog.zgsec.cn/archives/26.html

mysqlデフォルト構成ファイルパス:

c: \\プログラムファイル\ mysql \ mysqlserver 5.1 \ my.ini //windows

/etc/my.cnf //linux

/etc/mysql/my.cnf //linux

secure_file_privパラメーター(ログ関数の対応するディレクトリ)を変更する

secure_file_priv=''

MySQL構成を過負荷

フラッシュ特権

MySQLサービスを再起動します

sudoサービスmysql再起動

sudo systemctlはmysqlを再起動します

2.3.2 mssql補強

不要なアカウントを削除します

SQLServerユーザーパスワードセキュリティ

ユーザーによると、アカウント共有は避けてください

データベースユーザーに必要な最小許可を割り当てます

ネットワークアクセス制限

SQLServerログイン監査

SQLServerセキュリティインシデント監査

ロギング関数を構成します

2.4#リモートコントロール補強

2.4.1 SSH安全補強

IPログインを制限する方法

sudo nano/etc/ssh/sshd_config //ルート許可を使用してSSH構成ファイルを編集

Allowusers username@192.168.0.100 //次の行を見つけて編集して、希望のIPアドレスに設定されていることを確認します

ルートリモートログインを無効にします

sudo nano/etc/ssh/sshd_config //ルート許可を使用してSSH構成ファイルを編集

permitrootlogin no //permitrootlogiを「いいえ」に設定します

ユーザーとグループごとにSSHログインを制限します

sudo nano/etc/ssh/sshd_config //ルート許可を使用してSSH構成ファイルを編集

Allowusers testuser //SET TestuserはSSHにログインできるようにします

Allowusers testuser@192.168.1.100 //セットでは、192.168.1.100マシンのみがTestuserアカウントでSSHにログインできます

Groups Testを許可//ユーザーグループホワイトリストを設定します

//AllowusersとAllowgroupが同時に指定されている場合、両方のオプションと一致するユーザーがSSHログインでなければならないことに注意する必要があります。

SSHサービスを再起動します

Sudo Service sshd Restart

Sudo SystemCtl Restart Sshd.Service

2.4.2 RDPリモートログインセキュリティ補強材

デフォルトのアカウントを削除し、新しいユーザーを手動で追加します。

ステップ1:Win + Rを押して[実行]ダイアログボックスを開き、secpol.mscを入力して[OK]をクリックします

ステップ2:これに移動します:ローカルポリシーユーザー許可割り当ての割り当て、次にダブルクリックして「リモートデスクトップサービスを介してログインを許可」を開きます

ステップ3:このウィンドウにリストされている管理者とリモートデスクトップユーザー(またはコンピューター上の他のユーザーまたはグループ)を削除する

ステップ4:その後、「ユーザーまたはグループの追加」をクリックし、リモートデスクトップアクセスを許可するユーザーを手動で追加します。

デフォルトのRDPポート番号を変更します:

ステップ1:[実行]ダイアログボックスを開き、Regeditを入力して[OK]をクリックします

ステップ2:hkey_local_machine \ system \ currentControlset \ control \ターミナルサーバー\ winstations \ rdp-tcpを開き、下にスクロールしてportnumberを見つけてダブルクリックします

ステップ3:「小数」を選択し、設定するポート番号を変更し、[OK]をクリックします。

2.5#緊急対応

2.5.1クエリプロセススレッド

Netstat

ps -aux

netstat -apt

2.5.2プロセスを殺します

Kill -9 PID //Linuxで

Windows上のtaskkill /f /pid pid //

2.5.3 WebShellファイルを検索

Find/var/www/html -name *.php -mmin -5 //過去5分間に変更されたファイルを表示

./-name '*.php' |を見つけますxargs wc -l | sort -u //最短の行のファイルを見つけます。これは一般的にトロイの木馬です

grep -r -include=*。php '[^a -z] eval($ _ post'/var/www/html //キーワードを含むphpファイルを確認する

find/var/www/html -type f -name '*.php' | xargs grep 'eval(' | more //Linuxシステムでは、Find、Grep、Xargsコマンドの組み合わせを使用して、指定されたディレクトリ(/var/www/html)で.php拡張機能を持つすべてのファイルを見つけ、文字列'' eval( '' inこれらのファイルで 'evalを検索し、結果をパージに表示したときの結果をpagineしているときにパージーのパージをpagingで実行します。

2.5.4馬を殺すためにチェック

コマンドを使用して自動的に検索して削除することもできます

ps -aux | grep www-data | grep -v grep | awk '{print $ 2}' | Xargs Kill -9

次に、サービスを再起動します

サービスPHP-FPM再起動

2.5.5リバウンドシェルを殺します

プロセスを表示する古いルール

PS -EF

Px -aux

ps -aux | grep www-data

www-data pormissions /bin /shはNCである可能性が高いことに注意してください

それから古い注文があります

ps -auxを殺す| grep www-data | grep apache2 | awk '{$ 2を印刷}'

3#無料攻撃(攻撃)

3.0#メインコンテンツ

さまざまなCMSソフトウェアパッケージの最新バージョンが準備されています

スキャンツール:NMAP、Nessus、Metasploitの更新

Scripts POC、Exp

3.1#基本情報コレクション

3.1.1ホスト情報コレクション

NMAP

NAMP -SN 192.168.0.0/24 //セグメントCサバイバルスキャン

httpscan

httpscan.py 192.168.0.0/24 –T 10 //Cセグメントサバイバルスキャン

3.1.2ポートスキャン

NMAP -SV 192.168.0.2 //ホストシステムバージョンをスキャンします

NMAP -SS 192.168.0.2 //ホストの一般的に使用されるポートをスキャン

NMAP -SS -P 80,445 192.168.0.2 //ポートのホスト部分をスキャン

NMAP -SS -P- 192.168.0.2 //ホストのすべてのポートをスキャン

Pythonスクリプト

リクエストをインポートします

範囲のxの場合(2,255):

url='http://192.168.1。{}'。フォーマット(x)

try:

r=requests.post(url)

印刷(url)

:を除く

合格

3.2#外部管理

3.2.0共通システムの脆弱性

MS17-010(Eternal Blue、https://Blog.zgsec.cn/archives/172.htmlを参照)

MySQLはUDFエスカレーション(SQLインジェクションまたはMySQL弱いパスワード)を実行します

MSSQLはシステムコマンド実行(SQLインジェクションまたはMSSQL弱いパスワード)を実行します

SSH弱いパスワードまたはデフォルトのパスワード

PWN(これはAWDコンペティションによって提供される特定のコンテンツに依存します)

3.2.1ミドルウェアの脆弱性

IIS(脆弱性の解決、リモートコードの実行)

Apache(脆弱性を解析)

nginx(脆弱性の解析)

JBoss(CVE-2017-7504/CVE-2017-12149/CVE-2015-7501)

mysql(弱いパスワード)

Tomcat(弱いパスワードのGetShell)

WebLogic(CVE-2020-2551/CVE-2020-2555/CVE-2020-2883)

Springboot(不正アクセスの脆弱性とRCEの脆弱性、https://Blog.zgsec.cn/archives/129.htmlを参照してください)

3.2.2統合サービス環境における脆弱性

WampServer

XampServer

3.2.3 cmsの脆弱性エクスプロイト

CMSの最新バージョンと、対応する脆弱性POCとEXPを収集します。ここでは、CMSの一部のみがリストされています。

ASPCMS

DEDECMS

dicuz

Drupal

empirecms

eshop

FINECMS

Joomla

ランプ

Metainfo

phpcms

phpwind

qibocms

SEACM

semcms

thinkphp

wolfcms

WordPress

Zabbix

バックアップファイルブラスト:7kbscanなどのディレクトリスキャンツールを使用して、Webシステムを爆破する

3.2.4 WebShellのアップロード

トロイの木馬についての一般的なことわざ

php:php @eval($ _ post ['pass']);php eval($ _ get ['pass']);

ASP:%eval request( 'pass')%

aspx:%@ page言語='jscript